#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
****************************************************************/