#include <stdio.h>

int W, H;
char map[20][20];
int count;

void visit2(int, int);

void visit() {
  int i, j;
  count = 0;

  for(i = 0; i < H; i++) {
    for(j = 0; j < W; j++) {
      if(map[i][j] == '@') {
	count++;
	map[i][j] = '#';
	visit2(j, i);
	return;
      }
    }
  }
}

void visit2(int x, int y) {
  int dir[4][2] = {{1, 0},
		   {0, 1},
		   {-1,0},
		   {0,-1}};
  int dx, dy;
  int i;
  for(i = 0; i < 4; i++) {
    dx = x + dir[i][0];
    dy = y + dir[i][1];
    if(dx >= 0 && dx < W && dy >= 0 && dy < H) {
      if(map[dy][dx] == '.') {
	count++;
	map[dy][dx] = '#';
	visit2(dx, dy);
      }
    }
  }
}

int main() {
  int i, j;
  int a;
  while(1) {
    scanf("%d %d", &W, &H);
    if(W == 0 && H == 0) break;
    for(i = 0; i < 20; i++) {
      for(j = 0; j < 20; j++) {
	map[i][j] = '#';
      }
    }

    for(i = 0; i < H; i++) {
      getchar();
      for(j = 0; j < W; j++) {
	scanf("%c", &map[i][j]);
      }
    }
    visit();
    printf("%d\n", count);
  }
  return 0;
}