#include <iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define MAX_N 100000 * 2 + 16
using namespace std;
int W,H;
bool vis[105][105];
char G[105][105];
int dx[]={ 1,-1, 0, 0};
int dy[]={ 0, 0,-1, 1};
 
void dfs(int x,int y,char c)
{
    G[x][y] = '.';
    for(int i = 0;i<4;i++)
    {
        int nx = x+dx[i], ny = y+dy[i];
        if(nx>0 && nx<=H && ny>0 && ny<=W && G[nx][ny] == c)
            dfs(nx,ny,c);
    }
}
 
int main()
{
    while(cin>>H>>W) // H高度，W宽度
    {
        if (W==0 && H==0) break;
        memset(G,0,sizeof(G));
 
        for(int i =1;i<=H;i++)
            for(int j = 1; j<=W;j++)
                cin>>G[i][j];
        int sum = 0;
        for(int i = 1; i<=H;i++)
        {
            for(int j = 1; j<=W;j++)
            {
                if (G[i][j] != '.')
                {
                    dfs(i,j,G[i][j]);
                    sum++;
                }
            }
        }
        cout<<sum<<endl;
    }
    return 0;
}

