//新生训练
#include <iostream>
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;
int a, b, sum;
char c[20][20];
void dfs(int x, int y)
{
c[x][y] = '#';
if (x - 1 >= 0 && c[x - 1][y] == '.')
{
sum++;
dfs(x - 1, y);
}
if (x + 1 < b && c[x + 1][y] == '.')
{
sum++;
dfs(x + 1, y);
}
if (y - 1 >= 0 && c[x][y - 1] == '.')
{
sum++;
dfs(x, y - 1);
}
if (y + 1 < a && c[x][y + 1] == '.')
{
sum++;
dfs(x, y + 1);
}
}
int main()
{
int i, j, i1, j1;
while (cin >> a >> b, a != 0 && b != 0)
{
sum = 1;
for (i = 0; i < b; i++)
{
for (j = 0; j < a; j++)
{
cin >> c[i][j];
if (c[i][j] == '@')
{
i1 = i;
j1 = j;
}
}
}
dfs(i1, j1);
cout << sum << endl;
}
return 0;
}
//入门 DFS ,由于都类似于迷宫这一类题目,所以需要注意的是要有“撞墙回头”的标志;
~~~//仅当笔者个人备忘录使用。