#include <iostream>
#include <cstring>
using namespace std;

char mas[100][101];
int w,h;
int grx[4]={0,1,0,-1},gry[4]={1,0,-1,0};

void sha(int,int);
void as(int,int);
void at(int,int);

int main(){
  int cnt;
  while(1){
    cin >> h >> w;
    cnt = 0;
    if(w == 0 && h == 0) break;
    for(int i=0;i<100;i++) memset(mas[i],-1,sizeof(mas[i]));
    for(int i=0;i<h;i++){
      for(int j=0;j<w;j++){
	cin >> mas[i][j];
      }
    }
    for(int i=0;i<h;i++){
      for(int j=0;j<w;j++){
	if(mas[i][j] == '#'){
	  sha(j,i);
	  cnt++;
	}
	else if(mas[i][j] == '*'){
	  as(j,i);
	  cnt++;
	}
	else if(mas[i][j] == '@'){
	  at(j,i);
	  cnt++;
	}
      }
    }
    cout << cnt << endl;
  }
}

void sha(int x,int y){
  mas[y][x] = '0';
  for(int i=0;i<4;i++){
    int nx = x + grx[i];
    int ny = y + gry[i];
    if(nx >= 0 && nx < w && ny >= 0 && ny < h && mas[ny][nx] == '#'){
      sha(nx,ny);
    }
  }
}

void as(int x,int y){
  mas[y][x] = '0';
  for(int i=0;i<4;i++){
    int nx = x + grx[i];
    int ny = y + gry[i];
    if(nx >= 0 && nx < w && ny >= 0 && ny < h && mas[ny][nx] == '*'){
      as(nx,ny);
    }
  }
}

void at(int x,int y){
  mas[y][x] = '0';
  for(int i=0;i<4;i++){
    int nx = x + grx[i];
    int ny = y + gry[i];
    if(nx >= 0 && nx < w && ny >= 0 && ny < h && mas[ny][nx] == '@'){
      at(nx,ny);
    }
  }
}