#include<stdio.h>
#include<string.h>
int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
char a[100][100];
int sum,w,h;
void sousuo(int x,int y)
{ int next_x,next_y;
for(int i=0;i<=3;i++)
{
next_x=x+dir[i][0];
next_y=y+dir[i][1];
if(next_x<0||next_x>=h||next_y<0||next_y>=w)
continue;
if(a[next_x][next_y]=='.')
{
a[next_x][next_y]='#';
sum++;
sousuo(next_x,next_y);
}
}
}
int main()
{ int i,j;//不要在这重复定义w,h,不然结果sum输出全为1,检查了好久
//没看出来
while(scanf("%d%d",&w,&h)!=EOF)
{
int X,Y;
if(w==0&&h==0) break;
for(i=0;i<h;i++)
{
scanf("%s",a[i]);
for(j=0;j<=w-1;j++)
{
if(a[i][j]=='@')
{
X=i;Y=j;
}
}
}
sum=1;
sousuo(X,Y);
printf("%d\n",sum);
}
}