#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
using namespace std;
char map[101][101];
int a[101][101];
 int W,H;

struct P
{
    int x;
    int y;
};
void bfs(P p)
{
    P dir[5];
    dir[1].x=0;dir[1].y=1;
    dir[2].x=1;dir[2].y=0;
    dir[3].x=0;dir[3].y=-1;
    dir[4].x=-1;dir[4].y=0;
    char c=map[p.x][p.y];
    queue <P> q;
    q.push(p);
    a[p.x][p.y]=1;
    while(!q.empty())
    {
        for(int i=1;i<=4;i++)
        {
            P e;

            e.x=q.front().x+dir[i].x;
            e.y=q.front().y+dir[i].y;
            if(a[e.x][e.y]==0&&(e.x>=1&&e.x<=H&&e.y>=1&&e.y<=W)&& c==map[e.x][e.y])
            {
                a[e.x][e.y]=1;
                q.push(e);
            }
        }
        q.pop();
    }
}
int main()
{
    int cnt=0;

    freopen("C:\\Users\\ibm\\Desktop\\456.txt","r",stdin);
    while( 2==scanf("%d %d ",&H,&W)&&H&&W)
    {
        for(int i=1;i<=H;i++)
        {
            for(int j=1;j<=W;j++)
            {
                scanf("%c",&map[i][j]);
            }
            getchar();
        }
        memset(a,0,sizeof(a));
        for(int i=1;i<=H;i++)
        {
            for(int j=1;j<=W;j++)
            {
                if(a[i][j]==0)
                {
                    cnt++;
                    P p;
                    p.x=i;
                    p.y=j;
                    bfs(p);
                }
            }
        }
        printf("%d",cnt);
    }

    return 0;
}
