#include <iostream>
using namespace std;

char F[102][102];

void DFS(int Y,int X, char now)
{
  if(F[Y][X]!=now)
	return;
  
  F[Y][X]='.';

  DFS(Y-1,X  ,now);	//上
  //DFS(Y-1,X+1,now);	//右上
  DFS(Y  ,X+1,now);	//右
  //DFS(Y+1,X+1,now);	//右下
  DFS(Y+1,X  ,now);	//下
  //DFS(Y+1,X-1,now);	//左下
  DFS(Y  ,X-1,now);	//左
  //DFS(Y-1,X-1,now);	//左上
}

int main()
{
  int N,M;
  cin >> N >> M;
  for(int y=1;y<=N;y++){
	for(int x=1;x<=M;x++){
		cin >> F[y][x];
	}
  }

  while(N!=0||M!=0){

  int cnt=0;
  for(int y=1;y<=N;y++){
	for(int x=1;x<=M;x++){
		if(F[y][x]=='@'){
			cnt++;
			DFS(y,x,F[y][x]);
		}
		else if(F[y][x]=='#'){
			cnt++;
			DFS(y,x,F[y][x]);
		}
		else if(F[y][x]=='*'){
			cnt++;
			DFS(y,x,F[y][x]);
		}
	}
  }

  cout << cnt << endl;

  cin >> N >> M;
  for(int y=1;y<=N;y++){
	for(int x=1;x<=M;x++){
		cin >> F[y][x];
	}
  }

  }

  return 0;
}
