#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
char ma[105][105];
int n,m,ct;
void dfs(int x,int y){
ma[x][y]='*';
for(int dx = -1; dx <= 1; dx++){
for(int dy = -1; dy <= 1; dy++){
int nx=x+dx,ny=y+dy;
if(0 <= nx && nx < n && 0 <= ny && ny < m && ma[nx][ny]=='@')
dfs(nx,ny);
}
}
return;
}
int main(){
while(~scanf("%d%d",&n,&m)&&n&&m){
//getchar();
for(int i = 0; i < n; i++){
//gets(ma[i]);
scanf("%s",ma[i]);
}
// for(int i = 0; i < n; i++){
// for(int j = 0; j < m; j++){
// printf("%c",ma[i][j]);
// }
// printf("\n");
// }
ct=0;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(ma[i][j]=='@'){
dfs(i,j);
ct++;
}
}
}
printf("%d\n",ct);
}
return 0;
}
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
char ma[105][105];
int n,m,ct;
void dfs(int x,int y){
ma[x][y]='*';
for(int dx = -1; dx <= 1; dx++){
for(int dy = -1; dy <= 1; dy++){
int nx=x+dx,ny=y+dy;
if(0 <= nx && nx < n && 0 <= ny && ny < m && ma[nx][ny]=='@')
dfs(nx,ny);
}
}
return;
}
int main(){
while(~scanf("%d%d",&n,&m)&&n&&m){
//getchar();
for(int i = 0; i < n; i++){
//gets(ma[i]);
scanf("%s",ma[i]);
}
// for(int i = 0; i < n; i++){
// for(int j = 0; j < m; j++){
// printf("%c",ma[i][j]);
// }
// printf("\n");
// }
ct=0;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(ma[i][j]=='@'){
dfs(i,j);
ct++;
}
}
}
printf("%d\n",ct);
}
return 0;
}