#include<bits/stdc++.h>
using namespace std;
char a[100][100];
bool vis[100][100];
int ans=1;
int n,m;
bool check(int x,int y)
{
if(x<1||x>m) return false;
if(y<1||y>n) return false;
if(vis[x][y]==false) return false;
if(a[x][y]=='#') return false;
return true;
}
void dfs(int x,int y)
{
vis[x][y]=false;
for(int i=-1;i<=1;i++)
{
for(int j=-1;j<=1;j++)
{
int nx=x+i;
int ny=y+j;
if(check(nx,ny)==true)
{
vis[nx][ny]=false;
ans+=1;
dfs(nx,ny);
}
}
}
}
int main()
{
cin>>n>>m;
int startx;
int starty;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j];
}
}
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
vis[i][j]=true;
if(a[i][j]=='@')
{
startx=i;
starty=j;
}
}
}
dfs(startx,starty);
cout<<ans<<endl;
return 0;
}