#include <iostream>
using namespace std;

int H, W;
char Field[102][102];
const int dir[4][2] = {
	{1, 0},
	{-1, 0},
	{0, 1},
	{0, -1}
};

void dfs(int x, int y)
{
	char f = Field[y][x];
	Field[y][x] = '.';

	for(int i=0; i<4; i++){
		int nx = x + dir[i][0];
		int ny = y + dir[i][1];
		if(ny < H && ny >= 0 && nx < W && nx >= 0 && Field[ny][nx] == f)
			dfs(nx, ny);
	}

	return;
}

int main()
{
	while(true)
	{
		cin >> H >> W;
		if(H == 0 && W == 0) break;

		for(int i=0; i<H; i++){
			for(int j=0; j<W; j++)
				cin >> Field[i][j];
		}

		int ans = 0;
		for(int i=0; i<H; i++)
			for(int j=0; j<W; j++)
				if(Field[i][j] == '@' || Field[i][j] == '#' || Field[i][j] == '*'){
					dfs(j, i);
					ans++;
				}

		cout << ans << '\n';
	}
	return 0;

}