#include<iostream> #include<cstring> #include<algorithm> using namespace std ; const int N = 25 ; int d[4][2] = {{1,0},{-1,0},{0,1},{0,-1}} ; char g[N][N] ; int n , m ; int ans ; int sx , sy ; bool vis[N][N] ; void dfs(int u , int v){ for(int i = 0 ; i < 4 ; i ++){ int x = u + d[i][0] , y = v + d[i][1] ; if(x < 0 || x >= n || y < 0 || y >= m || vis[x][y] ||g[x][y] == '#' ) continue ; vis[x][y] = 1 ; if(g[x][y] == '.') ans ++ ; dfs(x,y) ; } } int main(){ while(cin >> m >> n , n ){ for(int i = 0 ; i < n ; i ++) cin >> g[i] ; for(int i = 0 ; i < n ; i ++){ for(int j = 0 ; j < m ; j ++){ if(g[i][j] == '@') sx = i , sy = j ; } } ans = 1 ; memset(vis,0,sizeof(vis)) ; dfs(sx,sy) ; cout << ans << endl ; } }