#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int m,n;
char map[100][100];
int visit[100][100];
int dm[8]={-1,1,0,0,-1,-1,1,1};
int dn[8]={0,0,-1,1,-1,1,-1,1};
//最经典的搜索题之一
int dfs(int a,int b)
{
map[a][b]=1;
visit[a][b]=1;
int c,d;
for(int i=0;i<8;i++)
{
c=a+dm[i];
d=b+dn[i];
if(c>=0&&c<m&&d>=0&&d<n&&map[c][d]=='@'&&(!visit[c][d]))
dfs(c,d);
}
return 0;
}
int main()
{
while(scanf("%d%d",&m,&n)!=EOF&&m!=0&&n!=0)
{
int sum=0;
memset(visit,0,sizeof(visit));
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cin>>map[i][j];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
if(map[i][j]=='@'&&(!visit[i][j]))
{
sum++;
dfs(i,j);
}
}
printf("%d\n",sum);
}
return 0;
}
#include<iostream>
#include<cstring>
using namespace std;
int m,n;
char map[100][100];
int visit[100][100];
int dm[8]={-1,1,0,0,-1,-1,1,1};
int dn[8]={0,0,-1,1,-1,1,-1,1};
//最经典的搜索题之一
int dfs(int a,int b)
{
map[a][b]=1;
visit[a][b]=1;
int c,d;
for(int i=0;i<8;i++)
{
c=a+dm[i];
d=b+dn[i];
if(c>=0&&c<m&&d>=0&&d<n&&map[c][d]=='@'&&(!visit[c][d]))
dfs(c,d);
}
return 0;
}
int main()
{
while(scanf("%d%d",&m,&n)!=EOF&&m!=0&&n!=0)
{
int sum=0;
memset(visit,0,sizeof(visit));
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cin>>map[i][j];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
if(map[i][j]=='@'&&(!visit[i][j]))
{
sum++;
dfs(i,j);
}
}
printf("%d\n",sum);
}
return 0;
}