#include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <fstream>
#include <algorithm>
#include <math.h>
#include <map>
using namespace std;

#define rep(i, n) for (int i = 0; i < n; i++)

string g[1000];
vector<string> _map;
int h = 0, w = 0, sum = 0;


//void rec(vector<string> _map, int y, int x, char cur) {// 参照渡し : const ,&
void rec(int y, int x, char cur) {// 参照渡し : const ,&
	// 現在マーク対象としている文字以外のセルなら戻る
	if (y<0 || x<0 || y>=h || x>=w || cur != _map[y][x]) {
		return;
	}
	// 後で重複してカウントしないようにマークしておk
	_map[y][x] = 'p';

	/*rec(_map, y-1,x, cur);
	rec(_map, y,x+1, cur);
	rec(_map, y+1,x, cur);
	rec(_map, y,x-1, cur);*/
	rec(y-1,x, cur);
	rec(y,x+1, cur);
	rec(y+1,x, cur);
	rec(y,x-1, cur);

	return;
}

void print(vector<string> v) {
	rep(i, v.size()) {
		rep(j, v[i].size()) {
			cout << v[i][j] << flush;
		} cout << endl;
	}
}
int main()
{
	ifstream cin("sampleA.txt");
	ofstream ofs("sampleAO.txt");

	//int h = 0, w = 0;
	//vector<string> _map;//vector<char>

	while (cin >> h >> w) {
		if (h == 0 && w == 0) {
			break;
		}
		cin.ignore();
		// 初期化処理
		_map.clear();
		_map.resize(h);
		sum = 0;

		//rep(i, h) _map[i].resize(w);
		// 最初の1行以外は9文字しか読み込まれてない
		rep(i, h) {
			string tmp = "";
			getline(cin, tmp);
			//cin.ignore();
			_map[i] = tmp;
			//cin.ignore();
		}

		// debug
		//print(_map); return 0;

		rep(i, h) {
			rep(j, w) {
				if (_map[i][j] != 'p') {
					sum++;
					rec(i, j, _map[i][j]);
				}
			}
		}

		cout << sum << endl;

	}

	return 0;
}