#include <iostream>
using namespace std;
void dfs1(int x,int y);
void dfs2(int x,int y);
void dfs3(int x,int y);
char ch[100][100];
int w,h;
int main()
{
    int i,j;
     int num=0;
    cin>>h>>w;
    while(w!=0&&h!=0)
    {
        for(i=0;i<h;i++)
        for(j=0;j<w;j++)
        cin>>ch[i][j];

    for(i=0;i<h;i++)
    for(j=0;j<w;j++)
    if(ch[i][j]=='#')
    {
       dfs1(i,j);
       num++;
    }
    for(i=0;i<h;i++)
    for(j=0;j<w;j++)
    if(ch[i][j]=='@')
    {
       dfs2(i,j);
       num++;
    }
    for(i=0;i<h;i++)
    for(j=0;j<w;j++)
    if(ch[i][j]=='*')
    {
       dfs3(i,j);
       num++;
    }
    cout<<num<<endl;
    num=0;
    cin>>h>>w;

    }
    return 0;
}
void dfs1(int x,int y)
{
    ch[x][y]='.';
    int nx,ny;
    for(int i=-1;i<=1;i++)
    for(int j=-1;j<=1;j++)
        if(i+j==1||i+j==-1)
        {
            nx=x+i;
            ny=y+j;
            if(nx>=0&&nx<h&&ny>=0&&ny<w&&ch[nx][ny]=='#')
            dfs1(nx,ny);
        }
}
void dfs2(int x,int y)
{
    ch[x][y]='.';
    int nx,ny;
    for(int i=-1;i<=1;i++)
    for(int j=-1;j<=1;j++)
        if(i+j==1||i+j==-1)
        {
            nx=x+i;
            ny=y+j;
            if(nx>=0&&nx<h&&ny>=0&&ny<w&&ch[nx][ny]=='@')
            dfs2(nx,ny);
        }
}
void dfs3(int x,int y)
{
    ch[x][y]='.';
    int nx,ny;
    for(int i=-1;i<=1;i++)
    for(int j=-1;j<=1;j++)
        if(i+j==1||i+j==-1)
        {
            nx=x+i;
            ny=y+j;
            if(nx>=0&&nx<h&&ny>=0&&ny<w&&ch[nx][ny]=='*')
            dfs3(nx,ny);
        }
}
