//简单题,深搜或宽搜都可以。
#include<cstdio>
#define MAX 21
int w,h;
int count;
int grid[MAX][MAX];
int dir[4][2]=
{
0,1,
1,0,
0,-1,
-1,0
};
void dfs(int x,int y)
{
count++;
grid[x][y]='#';
int i,xx,yy;
for(i=0; i<4; i++)
{
xx=x+dir[i][0],yy=y+dir[i][1];
if(xx<0||yy<0||xx>=h||yy>=w) continue;
if(grid[xx][yy]=='.')
dfs(xx,yy);
}
}
int main()
{
int i,j;
int sx,sy;
while(scanf("%d %d",&w,&h)){
getchar();
if(w==0&&h==0)
break;
count=0;
for(i=0; i<h; i++)
{
for(j=0; j<w; j++)
{
scanf("%c",&grid[i][j]);
if(grid[i][j]=='@') {sx=i,sy=j;}
}
getchar();
}
dfs(sx,sy);
printf("%d\n",count);
}
return 0;
}