#include <iostream>
#include <cstring>
using namespace std;
const int maxn=100 +10;
int n,m;
char map[maxn][maxn];
int vis[maxn][maxn],acc; 
const int dx[]={1,0,-1,0};
const int dy[]={0,1,0,-1};
void dfs(int x,int y,char t){
	for(int i=0;i<4;i++){
		int x0=x+dx[i],y0=y+dy[i];
		if(x0>=0 && x0<n && y0>=0 && y0<n && !vis[x0][y0] && map[x0][y0]==t){
			vis[x0][y0]=acc;
			dfs(x0,y0,t);
		}
	}
}
int main(){
	ios::sync_with_stdio(false);
	while((cin>>n>>m)&&n){
		acc=0;
		for(int i=0;i<n;i++)
			cin>>map[i];
		for(int i=0;i<n;i++){
			for(int j=0;j<m;j++){
				if(!vis[i][j]){
					acc++;
					dfs(i,j,map[i][j]);
				}
			}
		}
		cout<<acc<<endl;
	}
	return 0;
}