/*problem:poj1562
  *author:gubojun 
  *time:2012.7.27
  *language:C
  *题目大意:求有多少个不相连的区域代码中的解释很多了,别的不说了
  */
 #include<stdio.h>
 #include<string.h>
 #define N 101
 char map[N][N];
 int n,m,sum;
 void dfs(int i,int j)
 {
  //如果 map[i][j]='@'或超出范围,返回 
  if(map[i][j]!='@'||i<0||j<0||i>=m||j>=n) return;
  else
  {
     map[i][j]='*';
     //调用递归把与'@'相连的'@'都变成'*' 
     dfs(i-1,j-1);
     dfs(i-1,j);
     dfs(i-1,j+1);
     dfs(i,j-1);
     dfs(i,j+1);
     dfs(i+1,j-1);
     dfs(i+1,j);
     dfs(i+1,j+1);
  }
 }
 int main()
 {
  int i,j;
  freopen("in.txt","r",stdin); 
  while(scanf("%d%d",&m,&n)!=EOF)//输入图形有多少行多少列—m行n列 
  {
   if(m==0) break;//如果m==0就退出 
   sum=0;//初始化sum 
   for(i=0;i<m;i++)
    scanf("%s",map[i]);//输入图形 
   for(i=0;i<m;i++)
   {
    for(j=0;j<n;j++)
    {
     if(map[i][j]=='@')//判断map中是否有'@' 
     {
      dfs(i,j);//避免重复统计 
      sum++;
         }
       }
      }
      printf("%d\n",sum);//输入结果 
  }
  return 0;
 }