#include<stdio.h>
int W, H;
int count;
int vis[30][30];
char str[30][30];
struct Point{
int x, y;
}Start;
int dx[]={-1,0,1,0}, dy[]={0,1,0,-1};
void Scan_Point();//输入函数
void DFS(struct Point p);//执行函数
int main()
{
while(scanf("%d%d",&H,&W)){
if(W==0 && H==0) break;
count=1;
Scan_Point();
DFS(Start);
printf("%d\n",count);
}
return 0;
}
void Scan_Point(){
int i, j;
getchar();
for(i=0; i<W; i++){
for(j=0; j<H; j++){
scanf("%c",&str[i][j]);
vis[i][j]=1;
if(str[i][j]=='@'){
Start.x=i;
Start.y=j;
}
}
getchar();
}
}
void DFS(struct Point p){
int a, b;
int i, j;
struct Point temp;
for(i=0; i<4; i++){
a=p.x+dx[i]; b=p.y+dy[i];
temp.x=a; temp.y=b;
if(a>=0 && a<W && b>=0 && b<H && str[a][b]=='.' && vis[a][b]){
count++;
vis[a][b]=0;
DFS(temp);
}
}
return ;
}
/**************************************************************
Problem: 2126
User: admin
Language: C
Result: Accepted
Time:12 ms
Memory:1148 kb
****************************************************************/