const dx:array[1..4]of integer=(1,-1,0,0);
dy:array[1..4]of integer=(0,0,1,-1);
Var c:char;
m,n,i,j,k,l,sum,w,h,x1,y1:longint;
b,b1:array[-3..30,-3..30]of -1..0;
procedure try(x,y:longint);
var i1:longint;
begin
for i1:=1 to 4 do
if b[x+dx[i1],y+dy[i1]]=0 then
begin
inc(sum);
b[x+dx[i1],y+dy[i1]]:=-1;
try(x+dx[i1],y+dy[i1]);
end;
end;
begin
readln(h,w);
for i:=-2 to h+2 do
for j:=-2 to w+2 do
begin
b[i,j]:=-1;
end;
for i:=1 to h do
begin
for j:=1 to w do begin
read(c);
if c='.' then b[i,j]:=0;
if c='@' then begin x1:=i;y1:=j;b[i,j]:=0;end;
end;
readln;
end;
try(x1,y1);
write(sum);
end.
program rumen;
const maxn=20;
var a:array[0..maxn,0..maxn]of integer;
str:string;
total:integer;
w,h,i,j,k,m,n:integer;
procedure dfs(x,y:integer);
begin
if (x>w)or(x<1)then exit;
if (y>h)or(y<1)then exit;
if a[x,y]=0 then exit;
dec(a[x,y]);
inc(total);
dfs(x,y+1);
dfs(x,y-1);
dfs(x-1,y);
dfs(x+1,y);
end;
{main}
begin
total:=0;
readln(w,h);
for i:=1 to h do
begin
readln(str);
for j:=1 to w do
begin
if str[J]='#'then a[J,I]:=0;
if str[J]='.'then a[J,I]:=1;
if str[J]='@'then a[J,I]:=-1;
end;
end;
writeln(total);
end.