#include<iostream>
#include<algorithm>
#include<cstdio>
#include<string>
#include<vector>
#include<string.h>
#include<map>
#include<cmath>
#include<queue>
#define ll long long
#define INF 0x7fffffff
#define MAX 0x3f3f3f3f
#define maxn 100005
#define ull unsigned long long
using namespace std;
char f[25][25];
int w,h,num,p,q;
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
void dfs(int x,int y){
int xx,yy;
for(int i=0;i<4;i++){
xx=x+dir[i][0];yy=y+dir[i][1];
if(xx>=1&&xx<=h&&yy>=1&&yy<=w)
{
if(f[xx][yy]=='.'){
num++;
f[xx][yy]='#';
dfs(xx,yy);
}
}
}
return;
}
int main(){
int i,j;
while(~scanf("%d%d",&w,&h)&&w&&h){
num=1;
getchar();
for(i=1;i<=h;i++)
{
for(j=1;j<=w;j++)
{
scanf("%c",&f[i][j]);
if(f[i][j]=='@')
{
p=i;q=j;
}
}
getchar();
}
dfs(p,q);
printf("%d\n",num);
}
return 0;
}