#include<stdio.h>
#include<iostream>
#include<cstring>
using namespace std;
int m,n;
char a[110][100];
bool vis[110][110];
void dfs(int , int );
int main()
{
int ans=0;
while(~scanf("%d%d",&m,&n),m&&n)
{
memset(vis,0,sizeof(vis));
ans=0;
for(int i=0; i<m; i++)
scanf("%s",a[i]);
for(int i=0;i<m; i++)
for(int j=0; j<n; j++)
{
if(vis[i][j]==0 && a[i][j]=='@' )
{ ans++; dfs(i,j); }
}
cout<<ans<<endl;
}
return 0;
}
void dfs(int i, int j)
{
if( i<0||j<0||i>=m||j>=n)
return ;
if( a[i][j]=='*' || vis[i][j]==1)
return ;
vis[i][j]=1;
for(int k=0; k<=1; k++)
for(int l=0; l<=1; l++)
{
if(l!=0|| k!=0)
dfs(i+k,j+l);
}
}
#include<iostream>
#include<cstring>
using namespace std;
int m,n;
char a[110][100];
bool vis[110][110];
void dfs(int , int );
int main()
{
int ans=0;
while(~scanf("%d%d",&m,&n),m&&n)
{
memset(vis,0,sizeof(vis));
ans=0;
for(int i=0; i<m; i++)
scanf("%s",a[i]);
for(int i=0;i<m; i++)
for(int j=0; j<n; j++)
{
if(vis[i][j]==0 && a[i][j]=='@' )
{ ans++; dfs(i,j); }
}
cout<<ans<<endl;
}
return 0;
}
void dfs(int i, int j)
{
if( i<0||j<0||i>=m||j>=n)
return ;
if( a[i][j]=='*' || vis[i][j]==1)
return ;
vis[i][j]=1;
for(int k=0; k<=1; k++)
for(int l=0; l<=1; l++)
{
if(l!=0|| k!=0)
dfs(i+k,j+l);
}
}