#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int dx[]={0,1,-1,0}; const int dy[]={1,0,0,-1}; const int maxn = 25; bool vis[maxn][maxn]; char str[maxn][maxn]; int n,m; bool ok(int x,int y) { if(x>=0&&x<m&&y>=0&&y<n&&!vis[x][y]&&str[x][y]!='#') return true; return false; } void dfs(int x,int y,int &ans) { int i; int nx,ny; for(i=0;i<4;i++) { nx = x+dx[i]; ny = y+dy[i]; if(ok(nx,ny)) { vis[nx][ny]=true; ans++; dfs(nx,ny,ans); } } } int main() { int i,j; while(scanf("%d%d",&n,&m)!=EOF) { if(n==0&&m==0)break; int x,y; for(i=0;i<m;i++) { scanf("%s",str[i]); for(j=0;j<n;j++) { if(str[i][j]=='@') x = i,y=j; } } int ans = 1; memset(vis,false,sizeof(vis)); vis[x][y]=true; dfs(x,y,ans); printf("%d\n",ans); } return 0; }