#include <bits/stdc++.h>
using namespace std;
const int pipetype[] = {
9
,12
,3
,6
,10
,5
,13
,11
,7
,14
,15
};
const int N=50;
int f[N][N];
char farm[N][N+1];
int m,n,cnt;
void init(int row,int col)
{
for(int i=0;i<row;i++)
for(int j=0;j<col;j++)
f[i][j]=i*n+j;
cnt=row*col;
}
int Find(int row,int col)
{
return (f[row][col]==row*n+col)?f[row][col]:f[row][col]=Find(f[row][col]/n,f[row][col]%n);
}
void Union(int row1,int col1,int row2,int col2)
{
int p1=Find(row1,col1);
int p2=Find(row2,col2);
if(p1!=p2)
{
f[p2/n][p2%n]=p1;
cnt--;
}
}
void judge(int row,int col)
{
if(col>0&&(pipetype[farm[row][col]-'A']&1)&&((pipetype[farm[row][col-1]-'A']>>2)&1))
Union(row,col,row,col-1);
if(row>0&&((pipetype[farm[row][col]-'A']>>3)&1)&&((pipetype[farm[row-1][col]-'A'])>>1)&1)
Union(row,col,row-1,col);
}
int main()
{
ios::sync_with_stdio(false);cin.tie(0);
while(~scanf("%d%d",&m,&n)&&n>0)
{
init(m,n);
for(int i=0;i<m;i++)
scanf("%s",farm[i]);
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
judge(i,j);
printf("%d\n",cnt);
}
return 0;
}