//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(0<=nx&&nx<W&&0<=ny&&ny<H&&map[nx][ny]==c)dfs(nx,ny,c);
    }
}
int main(){
    while(scanf("%d%d",&W,&H),W!=0&&H!=0){
        int cnt=0;
        for(int i=0;i<H;i++)scanf("%s",map[i]); 
        for(int i=0;i<H;i++)
            for(int j=0;j<W;j++){
                char c=map[i][j];
                if(c!='.'){
                    cnt++;
                    dfs(i,j,c);
                }
            }
        printf("%d\n",cnt);
    }
    return 0;
}