#include <stdio.h>
#define Max_N 100

int N,M;
int count;
int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
char map[Max_N+1][Max_N+1]; 

void dfs(int x,int y,char data){
	map[x][y]='0';
	for(int i=0;i<4;i++){
		int tx=x+dx[i],ty=y+dy[i];
		if(tx<0||ty<0||tx>=N||ty>=M) continue;
		if(map[tx][ty]==data){
			dfs(tx,ty,data);
		}
	}
}

void solve(){
	count=0;
	for(int i=0;i<N;i++){
		for(int j=0;j<M;j++){
			if(map[i][j]=='#'){
				count++;
				dfs(i,j,'#');
			}else if(map[i][j]=='*'){
				count++;
				dfs(i,j,'*');
			}else if(map[i][j]=='@'){
				count++;
				dfs(i,j,'@');
			}
		}
	}
	printf("%d\n",count);
}

int main(){
	while(true){
		scanf("%d%d",&N,&M);
		if(N==0&&M==0) break;
		for(int i=0;i<N;i++){
			scanf("%s",map[i]);
		}
		solve();
	}
	
	return 0;
} 
