#include <iostream>

using namespace std;

#define MAX_W 100
#define MAX_H 100
int cnt, W, H;
int dx[4] = {0, 1, 0, -1}, dy[4] = {-1, 0, 1, 0};
char maze[MAX_H][MAX_W], c;

void DFS(int x, int y);

int main()
{
    while (cin >> W >> H && W && H)
	{
		for(int i = 0; i < H; i++)
		{
			for(int j = 0; j < W; j++)
			{
				cin >> maze[i][j];
			}
		}
		cnt = 0;
		for(int i = 0; i < H; i++)
		{
			for(int j = 0; j < W; j++)
			{
				if (maze[i][j] != '.')
				{
					c = maze[i][j];
					cnt++;
					DFS(i, j);
				}
			}
		}
		cout << cnt << endl;
	}
	return 0;
}

void DFS(int x, int y)
{
	maze[x][y] = '.';

	for (int i = 0; i < 4; i++)
	{
		int nx = x + dx[i];
		int ny = y + dy[i];
		if(nx >= 0 && nx <H && ny >= 0 && ny < W && maze[nx][ny] == c)
		{
			DFS(nx, ny);
		}
	}
}