#include<bits/stdc++.h>
using namespace std;
int fx[4]={1,0,-1,0},fy[4]={0,1,0,-1},n,m,ans;
char a[101][101];
struct Node{
int x,y;
};
queue<Node>q;
stack<Node>bu;
int main(){
cin>>n>>m;
for(int j=1;j<=m;j++)
for(int i=1;i<=n;i++){
cin>>a[j][i];
if(a[j][i]=='@')q.push({i,j}),ans++,bu.push({i,j});
}
while(q.size()){
for(int i=0;i<4;i++){
int tx=q.front().x+fx[i],ty=q.front().y+fy[i];
if(tx>0&&tx<=n&&ty>0&&ty<=m&&a[ty][tx]=='.'){
q.push({tx,ty});
bu.push({tx,ty});
a[ty][tx]='#';
ans++;
}
}
q.pop();
}
cout<<ans;
return 0;
}
/**************************************************************
Problem: 1897
User: chenshuo
Language: C++
Result: Accepted
Time:23 ms
Memory:2088 kb
****************************************************************/