#include <stdio.h>
#include <string.h>
char matrix[25][25];
int visited[25][25];
struct Node
{
int x, y;
}node;
int d[4][2] = {0, -1, 0, 1, -1, 0, 1, 0};
int w, h, sum = 0;
void DFS(Node nd)
{
int i;
sum++;
visited[nd.x][nd.y] = 1;
for(i = 0; i < 4; i++)
{
node.x = nd.x + d[i][0];
node.y = nd.y + d[i][1];
if(node.x >= 0 && node.x < h && node.y >= 0 && node.y < w)
{
if(visited[node.x][node.y] == 0 && matrix[node.x][node.y] == '.')
DFS(node);
}
}
return ;
}
int main()
{
int i, j;
while(scanf("%d%d", &w, &h) != EOF)
{
if(w == 0 && h == 0)
break;
memset(matrix, 0, sizeof(matrix));
memset(visited, 0, sizeof(visited));
for(i = 0; i < h; i++)
{
scanf("%s", matrix[i]);
for(j = 0; j < w; j++)
{
if(matrix[i][j] == '@')
{
node.x = i;
node.y = j;
}
}
}
sum = 0;
DFS(node);
printf("%d\n", sum);
}
return 0;
}