#include <iostream>

const int MAX_H = 100, MAX_W = 100, v[4][2] = {{-1,0},{0,-1},{1,0},{0,1}};
char map[MAX_H][MAX_W];
int W, H;

//x,y »ÝÌÊu c Á·¶
void dfs(int x, int y, char c){
	map[x][y] = 'a';

	for(int i=0;i<4;i++){
		int nx = x + v[i][0], ny = y + v[i][1];
		if(nx >= 0 && nx < W && ny >= 0 && ny < H && map[nx][ny] == c)dfs(nx,ny,c);
	}
	return ;
}

int main(){
	//Input
	while(std::cin >> W >> H,W&&H){
		for(int i = 0;i < H;i++){
			std::cin >> map[i];
		}
		
		//Processing
		int res = 0;
		for(int i=0;i<H;i++){
			for(int j=0;j<W;j++){
				if(map[i][j] != 'a')
					res++,dfs(i,j,map[i][j]);
			}
		}
		
		std::cout << res << std::endl;
	}
}