#include <iostream>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <utility>

using namespace std;


char map[30][30];
pair<int,int> s;
int w,h;
int cnt;
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
class Node{
public:
  int x,y;
  Node(int _x,int _y):x(_x),y(_y){

  }

};
int sx,sy;
void show(){
  for(int i=0;i<h;i++){
    cout<<map[i]<<endl;

  }
  cout<<endl;
}
void bfs(int x,int y,char c){
  cout<<x<<","<<y<<endl;
  queue<Node> q;
  q.push(Node(x,y));
  map[y][x]='.';
   while(!q.empty()){
    Node cur=q.front();q.pop();
    //    show();
     for(int i=0;i<4;i++){
      int nx=cur.x+dx[i];
      int ny=cur.y+dy[i];
      if(nx<0||nx>=w||ny<0||ny>=h||map[ny][nx]=='.'||map[ny][nx]!=c)continue;
      map[ny][nx]='.';
      q.push(Node(nx,ny));
    }
  }    
}
void solve(){
  cnt=0;
  for(int i=0;i<h;i++){
    for(int j=0;j<w;j++){
      if(map[i][j]!='.'){
	cnt++;
	bfs(j,i,map[i][j]);
      }
    }
  }
  cout<<cnt<<endl;
}
int main(){
  while(cin>>w>>h&&(w||h)){
    //    for(int i=0;i<h;i++)for(int j=0;j<w;j++)map[i][j]='.';
    for(int i=0;i<h;i++){
      cin>>map[i];
    }
    solve();
  }
  return 0;
}