#include<iostream>
#include<cstdio>
using namespace std;
const int maxn = 110;
int H,W,count;
int dx[4]={0,-1,0,1};
int dy[4]={1,0,-1,0};
char maze[maxn][maxn];
bool visit[maxn][maxn];
void dfs(int m,int n){
	visit[m][n] = true;
	for(int i=0;i<4;i++){
		int nx = m + dx[i];
		int ny = n + dy[i];
		if(nx>=0&&nx<H&&ny>=0&&ny<W&&maze[nx][ny]==maze[m][n]&&!visit[nx][ny]){
			dfs(nx,ny);
			
		} 
	} 
}
int main(){
	while(1){
		scanf("%d%d",&H,&W);
		getchar();
		count = 0;
		if(H==0&&W==0) break;
		for(int i=0;i<H;i++){
			for(int j=0;j<W;j++){
				scanf("%c",&maze[i][j]);
				visit[i][j]=false;
			}
			getchar();
		}
		for(int i=0;i<H;i++){
			for(int j=0;j<W;j++){
				if(visit[i][j]) continue;
				else{
					dfs(i,j);
					count++;
				}
			}
		}
		cout<<count<<endl;
	}
} 
