import java. io. * ;
import java. util. * ;
public class Main {
static BufferedReader sc = new BufferedReader ( new InputStreamReader ( System . in) ) ;
static PrintWriter out = new PrintWriter ( new OutputStreamWriter ( System . out) ) ;
static int N = 30 , n, m;
static char [ ] [ ] g = new char [ N ] [ N ] ;
public static int bfs ( Pair p)
{
int [ ] dx= { - 1 , 0 , 1 , 0 } , dy= { 0 , 1 , 0 , - 1 } ;
Queue < Pair > Q = new LinkedList < > ( ) ;
Q . offer ( p) ;
g[ p. x] [ p. y] = '#' ;
int res= 0 ;
while ( ! Q . isEmpty ( ) )
{
Pair t= Q . poll ( ) ;
res++ ;
for ( int i= 0 ; i< 4 ; i++ )
{
int x= t. x+ dx[ i] , y= t. y+ dy[ i] ;
if ( x>= 0 && x< n& & y> = 0 && y< m&& g[ x] [ y] == '.' )
{
g[ x] [ y] = '#' ;
Q . offer ( new Pair ( x, y) ) ;
}
}
}
return res;
}
public static void main ( String [ ] args) throws IOException {
while ( true )
{
String [ ] str = sc. readLine ( ) . split ( " " ) ;
n= Integer . parseInt ( str[ 1 ] ) ;
m= Integer . parseInt ( str[ 0 ] ) ;
if ( n== 0 && m== 0 ) break ;
Pair p= null ;
for ( int i= 0 ; i< n; i++ )
{
g[ i] = sc. readLine ( ) . toCharArray ( ) ;
for ( int j= 0 ; j< m; j++ )
if ( g[ i] [ j] == '@' )
p= new Pair ( i, j) ;
}
System . out. println ( bfs ( p) ) ;
}
out. flush ( ) ;
}
}
class Pair {
int x, y;
public Pair ( int x, int y) {
this . x= x;
this . y= y;
}
}