#include <iostream>
using namespace std;

char F[102][102];
void DFS_R(int Y,int X){
  if(F[Y][X]!='@'){
    return;
  }
  F[Y][X]='.';
  DFS_R(Y-1,X  );
  DFS_R(Y  ,X+1);
  DFS_R(Y+1,X  );
  DFS_R(Y  ,X-1);
}
void DFS_K(int Y,int X){
  if(F[Y][X]!='#'){
    return;
  }
  F[Y][X]='.';
  DFS_K(Y-1,X  );
  DFS_K(Y  ,X+1);
  DFS_K(Y+1,X  );
  DFS_K(Y  ,X-1);
}
void DFS_M(int Y,int X){
  if(F[Y][X]!='*'){
    return;
  }
  F[Y][X]='.';
  DFS_M(Y-1,X  );
  DFS_M(Y  ,X+1);
  DFS_M(Y+1,X  );
  DFS_M(Y  ,X-1);
}

int main(){
  int H,W;
  cin>>H>>W;
  while(H!=0){
    for(int y=1;y<=H;y++){
      for(int x=1;x<=W;x++){
        cin>>F[y][x];
      }
    }
    int cntR=0;
    int cntK=0;
    int cntM=0;
    for(int y=1;y<=H;y++){
      for(int x=1;x<=W;x++){
        if(F[y][x]=='@'){
          cntR++;
          DFS_R(y,x);
        }else if(F[y][x]=='#'){
          cntK++;
          DFS_K(y,x);
        }else if(F[y][x]=='*'){
          cntM++;
          DFS_M(y,x);
        }
      }
    }
    int cnt=0;
    cnt=cntR+cntK+cntM;
    cout<<cnt<<endl;
    cin>>H>>W;
  }
  return 0;
}
