"""
#include <bits/stdc++.h>
using namespace std;
int w,h,startx,starty,step;
char maze[55][55];
bool visited[55][55];
int dx[4]={1,0,0,-1};
int dy[4]={0,1,-1,0};
struct grid
{
int x;
int y;
int steps;
};
int bfs()
{
queue <grid> que;
grid a={startx,starty,1};
que.push(a);
visited[startx][starty]=1;
step=1;
while(!que.empty())
{
grid temp=que.front();
que.pop();
for(int i=0;i<4;i++)
{
int tx=temp.x+dx[i];
int ty=temp.y+dy[i];
if(tx<0||ty<0||tx>=w||ty>=h||maze[tx][ty]=='#'||visited[tx][ty]==1)
continue;
int tt=temp.steps+1;
step+=1;
a.x=tx;
a.y=ty;
a.steps=tt;
que.push(a);
visited[tx][ty]=1;
}
}
return step;
}
int main()
{
cin>>w>>h;
for(int x=0;x<w;x++)
{
for(int y=0;y<h;y++)
{
cin>>maze[x][y];
if(maze[x][y]=='@')
startx=x,starty=y;
}
}
cout<<bfs()<<endl;
return 0;
}