#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const ll N=1005;
ll n,m;
vector<vector<char>>g(N,vector<char>(N));
ll cnt=0;
queue<pair<ll,ll>>q;
bool B[N][N];
ll dx[]={0,0,1,-1};
ll dy[]={1,-1,0,0};
void bfs(){
while(!q.empty()){
pair<ll,ll>t=q.front();
q.pop();
if(g[t.first][t.second]=='!')cnt++;
for(ll i=0;i<4;i++){
ll x=t.first+dx[i],y=t.second+dy[i];
if(x>n||x<1||y>m||y<1||B[x][y]==true||g[x][y]=='#')continue;
B[x][y]=true;
q.push({x,y});
}
}
}
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m;
for(ll i=1;i<=n;i++){
string t;
cin>>t;
for(ll j=1;j<=m;j++){
g[i][j]=t[j-1];
if(g[i][j]=='@')q.push({i,j});
}
}
bfs();
cout<<cnt;
return 0;
}