#include <iostream>
using namespace std;
int area;
const int maxn=105;
char maze[maxn][maxn];
const int step[][2]={{-1,0},{1,0},{0,-1},{0,1}};
int N,M;
void dfs(int x,int y,char ch){
    maze[x][y]='$';
    for(int i=0;i<4;i++){
        int nx=x+step[i][0],ny=y+step[i][1];
        if(nx>=0&&ny>=0&&nx<N&&ny<M&&maze[nx][ny]==ch){
            dfs(nx,ny,ch);
        }
    }
    return;
}
int main() {
   // freopen("test","r",stdin);
    while(cin>>N>>M&&N+M){
        area=0;
        for(int i=0;i<N;i++)
            for(int j=0;j<M;j++)
                cin>>maze[i][j];

        for(int i=0;i<N;i++){
            for(int j=0;j<M;j++){
            if(maze[i][j]!='$'){
                char ch=maze[i][j];
                dfs(i,j,ch);
                area++;
            }
            }
        }
        cout<<area<<endl;
    }
    return 0;
}
