#include <iostream>
#include <queue>
#include <string.h>
#define P pair<int,int>
using namespace std;
int dh[]={-1,0,1,0};
int dw[]={0,-1,0,1};
char field[100][100];
int H,W;
bool input() {
	cin >> H >> W ; if(!H && !W) return false;
	for(int i=0;i<H;i++) for(int j=0;j<W;j++) cin >> field[i][j] ;
	return true;
}
bool inBoard(int h,int w) {
	if(0<=h && h<H && 0<=w && w<W) return true;
	return false;
}
int main() {
	while(input()) {
		bool tmp[100][100]={0}; queue<P> q;
		int cnt=0;
		for(int i=0;i<H;i++) {
			for(int j=0;j<W;j++) {
				if(tmp[i][j]) continue;
				q.push(P(i,j)); tmp[i][j]=true; cnt++;
				while(!q.empty()) {
					int h,w;
					h=q.front().first; w=q.front().second; q.pop();
					for(int k=0;k<4;k++) {
						if(!inBoard(h+dh[k],w+dw[k]) || field[i][j]!=field[h+dh[k]][w+dw[k]] || tmp[h+dh[k]][w+dw[k]])
							continue;
						q.push(P(h+dh[k],w+dw[k])); tmp[h+dh[k]][w+dw[k]]=true;
					}
				}
			}
		}
		cout << cnt << '\n' ;
	}
}