#include <iostream>
using namespace std;

int w, h;
int t;
int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};
char field[100][100];
bool masu[100][100];

void dfs(int a, int b){
	for(int i = 0; i < 4; i++){
		int nx = a+dx[i];
		int ny = b+dy[i];
		if(nx >= 0 && ny >= 0 && nx < w && ny < h && masu[ny][nx] == false && field[b][a] == field[ny][nx]){
			masu[ny][nx] = true;
			dfs(nx, ny);
		}
	}
}

void solve(){
	for(int i = 0; i < h; i++){
		for(int j = 0; j < w; j++){
			if(masu[i][j] == false){
				masu[i][j] = true;
				dfs(j, i);
				t++;
			}
		}
	}
	cout << t << endl;
}

int main(){
	while(cin >> h >> w){
		if(h == 0 && w == 0) break;
		t = 0;
		for(int i = 0; i < 100; i++){
			for(int j = 0; j < 100; j++){
				masu[i][j] = false;
			}
		}
		for(int i = 0; i < h; i++){
			for(int j = 0; j < w; j++){	
				cin >> field[i][j];
			}
		}
		solve();
	}
}