#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
const int N= 21;
char map[N][N];
bool mark[N][N];
int dir[4][2] = {1, 0, -1, 0, 0 ,1, 0 , -1};
int w,h,dx,dy,ans;
void dfs( int x, int y)
{
int i;
mark[x][y] = true;
for( i = 0; i < 4; i++)
{
int p = x +dir[i][0];
int q = y +dir[i][1];
if( p >= 0 && q >= 0 && p < h && q < w && !mark[p][q] && map[p][q] != '#')
{
ans ++;
dfs(p,q);
}
}
}
int main()
{
int i,j,k;
while(scanf("%d%d",&w,&h) && ( w || h) )
{
memset( mark, false, sizeof(mark));
for( i = 0; i < h ; i++)
for( j = 0; j < w ; j++)
{
cin>>map[i][j];
if(map[i][j] == '@')
{
dx = i;
dy = j;
}
}
ans = 1;
dfs( dx, dy);
printf("%d\n",ans);
}
}