#include <stdio.h>
int W,H;
char map[20][20];
int c;

int noru(int x,int y){
        int go[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
        int i;

        if(map[x][y]=='#')
                return;
        if(x<0 || y<0 || x>=W || y>=H)
                return;

        c++;
        map[x][y]='#';
        for(i=0;i<4;i++)
                noru(x+go[i][0],y+go[i][1]);
        return;
}

showmap(){
        int i,j;
        for(i=0;i<H;i++){
                for(j=0;j<W;j++)
                        putchar(map[j][i]);
                puts("");
        }
}
main(){
        int i,j;
        int x,y;

        while(scanf("%d %d",&W,&H)!=EOF){
                if(W==0)
                        break;
                for(i=0;i<H;i++){
                        for(j=0;j<W;j++){
                                scanf(" %c",&map[j][i]);
                                if(map[j][i]=='@'){
                                        x=j;
                                        y=i;
                                }
                        }
                }

                c=0;
                noru(x,y);
                printf("%d\n",c);
        }
        return 0;
}