/*
qq:1239198605
ctgu_yyf
*/
#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
#include<queue>
#include<stack>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ll long long
using namespace std;
char map[25][25];
int vis[25][25];
int m,n;
int ans;
int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
bool inmap(int x,int y)
{
if(x>=1&&x<=n&&y>=1&&y<=m)
return true;
return false;
}
void dfs(int startx,int starty)
{
// cout<<startx<<starty<<"**"<<endl;
vis[startx][starty]=1;
int nx,ny;
for(int i=0;i<4;i++)
{
nx=startx+dir[i][0];
ny=starty+dir[i][1];
if(inmap(nx,ny)&&map[nx][ny]=='.'&&vis[nx][ny]==0)
{
ans++;
dfs(nx,ny);
}
}
}
int main()
{
ios::sync_with_stdio(false);
while(cin>>m>>n)
{
if(m==0&&n==0)
break;
memset(vis,0,sizeof(vis));
ans=1;
int startx,starty;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
cin>>map[i][j];
if(map[i][j]=='@')
{
startx=i;
starty=j;
}}
dfs(startx,starty);
cout<<ans<<endl;
}
return 0;
}