#include <cstdio>
#include <cstring>
using namespace std;
bool grad[11][4] = {{1,1,0,0}, {1,0,0,1}, {0,1,1,0}, {0,0,1,1},//i = 0表示上,顺时针编号;j = 1表示连通
{1,0,1,0}, {0,1,0,1}, {1,1,0,1}, {1,1,1,0},
{0,1,1,1}, {1,0,1,1}, {1,1,1,1}};
char a[55][55];
int fa[55*55];
int pipe[55*55];
int m, n;
int findfa(int x);
void join(int x, int y, bool flag);//1则兼并右边,0则兼并下面
int main()
{
int i, j;
while(~scanf("%d %d", &m, &n), ~m && ~n)
{
getchar();
for(i = 0; i < m * n; ++i) fa[i] = i;
for(i = 0; i < m; ++i) scanf("%s", a[i]);
getchar();
for(i = 0; i < m; ++i)
for(j = 0; j < n; ++j)
pipe[i * n + j] = a[i][j] - 'A';
for(i = 0; i < m; ++i)
for(j = 0; j < n; ++j)
{
if(j < n - 1) join(i * n + j, i * n + j + 1, 1);
if(i < m - 1) join(i * n + j, (i + 1) * n + j, 0);
}
int cnt = 0;
for(i = 0; i < m * n; ++i)
if(fa[i] == i) ++cnt;
printf("%d\n", cnt);
}
return 0;
}
void join(int x, int y, bool flag)
{
int px = pipe[x], py = pipe[y];
int f1 = findfa(x);
int f2 = findfa(y);
if(flag && grad[px][3] && grad[py][1]) fa[f2] = f1;
if(!flag && grad[px][2] && grad[py][0]) fa[f2] = f1;
}
int findfa(int x)
{
return fa[x] == x ? x : fa[x] = findfa(fa[x]);
}