#include <iostream>
using namespace std;
int n, m;
char map[110][110];
void dfs(int x, int y, char ch)
{
	int dir[4][2] = { 1,0,-1,0,0,1,0,-1 };//向四个方向搜索
	int x1, y1;
	map[x][y] = '.';//标记搜索过区域
	for (int i = 0; i<4; i++)//向四个方向搜索
	{
		x1 = x + dir[i][0];
		y1 = y + dir[i][1];
		if (x1 >= 0 && x1<n&&y1 >= 0 && y1<m&&map[x1][y1] == ch)//在边界内且为同类型
			dfs(x1, y1, ch);
	}
}

int main(int argc, char *argv[])
{
	char ch;
	while (cin >> n >> m)//输入地图大小
	{
		int ans = 0;
		if (n == 0 || m == 0) break;//结束文件

		for (int i = 0; i<n; i++)
			for (int j = 0; j<m; j++)
				cin >> map[i][j];//输入地图
		for (int i = 0; i<n; i++)
			for (int j = 0; j<m; j++)
				if (map[i][j] != '.')
				{
					ch = map[i][j];//标记ch类型
					ans++;//每次搜索结果为一个区域
					dfs(i, j, ch);
				}
		cout << ans << endl;
	}
	return 0;
}
