#include<stdio.h>
#define MAXH 22
#define MAXW 24

int bfs(int mat[20][22],int visited[20][22],int ph,int pw,int* ans){
	int vector[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
	int i;
	visited[ph][pw]=1;
	(*ans)++;
	for(i=0;i<4;i++){
		int nh=ph+vector[i][0];
		int nw=pw+vector[i][1];
		if(mat[nh][nw]=='.'&&visited[nh][nw]==0){
			bfs(mat,visited,nh,nw,ans);
		}
	}
	return 0;
}
int input(int mat[20][22],int h,int w,int* sh,int* sw){
	int i,j;
	for(i=1;i<h+1;i++){
		for(j=1;j<w+1;j++){
			int c;
			while(c=getchar()){
				if(c!='\n'){
					mat[i][j]=c;
					if(c=='@'){
						*sh=i;
						*sw=j;
					}
					break;
				}
			}
		}
	}
	return 0;
}
int main(){
	int w,h;
	int sh,sw;
	int ans=0;
	int mat[20][22],visited[20][22];
	int i,j,k;
	while(1){
		scanf("%d %d",&w,&h);
		if(w==0&&h==0){
			break;
		}
		for(i=0;i<20;i++){
			for(j=0;j<22;j++){
				mat[i][j]='#';
				visited[i][j]=0;
			}
		}
		input(mat,h,w,&sh,&sw);
		bfs(mat,visited,sh,sw,&ans);
		printf("%d\n",ans);
	}
	return 0;
}