#include <bits/stdc++.h>
using namespace std;
int r, c, visited[24][24], ret = 1, cnt[26];
int dy[] = {-1, 0, 1, 0};
int dx[] = {0, 1, 0, -1};
char a[24][24];
int dfs(int y, int x){
int ret = 1;
for(int i = 0; i < 4; i++){
int ny = y + dy[i];
int nx = x + dx[i];
if(ny < 0 || ny >= r || nx < 0 || nx >= c || visited[ny][nx] || cnt[a[ny][nx] - 'A']) continue;
visited[ny][nx] = 1;
cnt[a[ny][nx] - 'A'] = 1;
ret += dfs(ny, nx);
}
return ret;
}
int main(){
cin >> r >> c;
for(int i = 0; i < r; i++){
for(int j = 0; j < c; j++){
cin >> a[i][j];
}
}
visited[0][0] = 1;
cnt[a[0][0] - 'A'] = 1;
cout << dfs(0, 0) << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCByLCBjLCB2aXNpdGVkWzI0XVsyNF0sIHJldCA9IDEsIGNudFsyNl07CmludCBkeVtdID0gey0xLCAwLCAxLCAwfTsKaW50IGR4W10gPSB7MCwgMSwgMCwgLTF9OwpjaGFyIGFbMjRdWzI0XTsKCmludCBkZnMoaW50IHksIGludCB4KXsKICAgIGludCByZXQgPSAxOwogICAgZm9yKGludCBpID0gMDsgaSA8IDQ7IGkrKyl7CiAgICAgICAgaW50IG55ID0geSArIGR5W2ldOwogICAgICAgIGludCBueCA9IHggKyBkeFtpXTsKICAgICAgICBpZihueSA8IDAgfHwgbnkgPj0gciB8fCBueCA8IDAgfHwgbnggPj0gYyB8fCB2aXNpdGVkW255XVtueF0gfHwgY250W2FbbnldW254XSAtICdBJ10pIGNvbnRpbnVlOwogICAgICAgIHZpc2l0ZWRbbnldW254XSA9IDE7CiAgICAgICAgY250W2FbbnldW254XSAtICdBJ10gPSAxOwogICAgICAgIHJldCArPSBkZnMobnksIG54KTsKICAgIH0KICAgIHJldHVybiByZXQ7Cn0KaW50IG1haW4oKXsKICAgIGNpbiA+PiByID4+IGM7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgcjsgaSsrKXsKICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwgYzsgaisrKXsKICAgICAgICAgICAgY2luID4+IGFbaV1bal07CiAgICAgICAgfQogICAgfQogICAgCiAgICB2aXNpdGVkWzBdWzBdID0gMTsKICAgIGNudFthWzBdWzBdIC0gJ0EnXSA9IDE7CiAgICBjb3V0IDw8IGRmcygwLCAwKSA8PCAnXG4nOwp9