//AOJ0118 Property Distribution
#include<cstdio>
char map[105][105];
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
int W,H;
void dfs(int x,int y,char c){
    map[x][y]=' ';
    for(int i=0;i<4;i++){
        int nx=x+dx[i],ny=y+dy[i];
        if(1<=nx&&nx<=H&&1<=ny&&ny<=W&&map[nx][ny]==c)dfs(nx,ny,c);
    }
}
int main(){
    while(scanf("%d%d",&W,&H),W&&H){
        int cnt=0;
        for(int i=1;i<=H;i++){
            scanf("%*c");
            for(int j=1;j<=W;j++)scanf("%c",&map[i][j]);
        }
        for(int i=1;i<=H;i++)
            for(int j=1;j<=W;j++)
                if(map[i][j]!=' '){
                    dfs(i,j,map[i][j]);
                    cnt++;
                }
        printf("%d\n",cnt);
    }
    return 0;
}