#include<iostream>
#include<string.h>
#include<algorithm>
#include<stdio.h>
const int MAX = 110;
using namespace std;

char map[MAX][MAX];
int vis[MAX][MAX];
int n,m,sum;
int s[4][2] = {{0,1},{1,0},{0,-1},{-1,0}};
char c[3] = {'#','@','*'};

void DFS(int x,int y,int z)
{
    vis[x][y] = 1;
    for(int i = 0; i < 4; i ++)
    {
        x = x + s[i][0];
        y = y + s[i][1];
        if(x >= 0 && x < n && y >= 0 && y < m && !vis[x][y] && map[x][y] == c[z])
        {
            vis[x][y] = 1;
            DFS(x,y,z);
        }
    }
    return ;
}

int main()
{
    while(scanf("%d%d",&n,&m) && n && m)
    {
        for(int i = 0; i < n; i ++)
            scanf("%s",map[i]);

        memset(vis,0,sizeof(vis));
        sum = 0;
        for(int k = 0; k < 3; k ++)
            for(int i = 0; i < n; i ++)
                for(int j = 0; j < m; j ++)
                    if(!vis[i][j] && map[i][j] == c[k])
                    {
                        ++ sum;
                        DFS(i,j,k);
                    }
        printf("%d\n",++sum);
    }
}