#include<iostream>
using namespace std;
char a[102][102];
int dir[8][2]={{1,0},{-1,0},{-1,1},{-1,-1},{1,1},{1,-1},{0,1},{0,-1}};
int m,n;
int bfs(int x,int y)
{
int ts,ty;
for(int i=0;i<8;i++)
{
ts=x+dir[i][0];
ty=y+dir[i][1];
if(a[ts][ty]=='@'&&(ts>=1&&ts<=m&&ty>=1&&ty<=n))//不能越界且注意范围的正确性
{
a[ts][ty]='*';//相当于标记该点
bfs(ts,ty);
}
}
return 0;
}
int main()
{
while(cin>>m>>n&&m||n)
{
int num=0;
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
for(int i=1;i<=m;i++)
for(int j=1;j<=n;j++)
{
if(a[i][j]=='@')
{
num++;
a[i][j]='*';
bfs(i,j);
}
}
cout<<num<<endl;
}
return 0;
}