#include <bits/stdc++.h>
using namespace std;
int w,h,vis[110][110];
int ans;
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};
char mp[110][110];
struct node
{
int x,y;
};
void bfs(int x,int y)
{
vis[x][y]=1;
node a={x,y};
queue<node> q;
q.push(a);
while(!q.empty())
{
node k=q.front();
q.pop();
ans++;
for(int i=0;i<4;i++)
{
int fx=k.x+dx[i];
int fy=k.y+dy[i];
if(!vis[fx][fy]&&fx>=1&&fx<=h&&fy>=1&&fy<=w&&mp[fx][fy]=='.')
{
vis[fx][fy]=1;
node p={fx,fy};
q.push(p);
}
}
}
}
main()
{ int sx,sy;
cin>>w>>h;
for(int i=1;i<=h;i++)
for(int j=1;j<=w;j++)
{
cin>>mp[i][j];
if(mp[i][j]=='@');
sx=i,sy=j;
}
bfs(sx,sy);
cout<<ans;
}