#include<iostream>
#include<cstring>
using namespace std;
int H,W;
char map[110][110];
int dir[4][2] = {{0,1},{0,-1},{-1,0},{1,0}};

int res;

bool InBox(int nx,int ny)
{
	return nx>=0&&nx<W&&ny>=0&&ny<H;
	
}

void dfs(int x,int y,char c)
{
	map[y][x] = '.';
	for(int i=0;i<4;i++)
	  {
	  	int nx = x+dir[i][0];
	  	int ny = y+dir[i][1];
	  	if(InBox(nx,ny)&&map[ny][nx]==c)
	  	  dfs(nx,ny,c);
	  }
	  
	
	
}

int main()
{
	cin>>H>>W;
	while(H&&W)
	{
		res=0;
		memset(map,0,sizeof(map));
		
		
		for(int y=0;y<H;y++)
		  for(int x=0;x<W;x++)
		    cin>>map[y][x];
		    
		for(int y=0;y<H;y++)
		  for(int x=0;x<W;x++)
		    if(map[y][x]!='.'){
		      dfs(x,y,map[y][x]);
		      res++;
			}
		      
		cout<<res<<endl;
		cin>>H>>W;
		
	}
}
