#include<iostream>
#include<vector>
using namespace std;

vector<vector<char>> ma(100,vector<char>(100,'0'));
int H,W;

vector<int> dx(4,0);
vector<int> dy(4,0);

//int dx[4]={1,0,-1,0};
//int dy[4]={0,1,0,-1};
char cc;

void dfs(char c,int x,int y){
	cc=c;
	ma[x][y]='0';
	for(int i=0;i<4;i++){
		if(x+dx[i]>=0 && x+dx[i]<H && y+dy[i]>=0 && y+dy[i]<W && ma[x+dx[i]][y+dy[i]]==c)dfs(ma[x+dx[i]][y+dy[i]],x+dx[i],y+dy[i]);
	}
	return ;
}
void dfs2(int xx,int yy){
	ma[xx][yy]='0';
	for(int i=0;i<4;i++){
		if(xx+dx[i]>=0 && xx+dx[i]<H && yy+dy[i]>=0 && yy+dy[i]<W && ma[xx+dx[i]][yy+dy[i]]==cc)dfs2(xx+dx[i],yy+dy[i]);
	}
	return ;
}





int main(){
dx[0]=1;
dx[2]=-1;
dy[1]=1;
dy[3]=-1;
	while(cin>>H>>W,H,W){
		for(int i=0;i<H;i++){
			for(int j=0;j<W;j++){
				cin>>ma[i][j];
			}
		}
		int ans=0;
		for(int i=0;i<H;i++){
			for(int j=0;j<W;j++){
				if(ma[i][j]=='#'){
					dfs('#',i,j);
					ans++;
				}
				else if(ma[i][j]=='@'){
					dfs('@',i,j);
					ans++;
				}
				else if(ma[i][j]=='*'){
					dfs('*',i,j);
					ans++;
				}
			}
		}

		cout<<ans<<endl;

	}

}


					



