#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;
}