#include <algorithm>
#include <bitset>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <climits>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
#define ALL(A)		(A).begin(),(A).end()
#define DUMP(A)    cout<<#A<<"="<<(A)<< endl
#define SIZE(A)    (int)((A).size())
using namespace std;
typedef long long ll;

char ma[100][100];
bool vis[100][100];
int vx[]={1,0,-1,0},vy[]={0,-1,0,1};
int H,W;
void umel(int x,int y,char c){
    vis[x][y]=true;
    for(int i=0;i<4;i++){
        int nx=x+vx[i],ny=y+vy[i];
        if(0<=nx && nx<H && 0<=ny && ny<W && ma[nx][ny]==c && !vis[nx][ny]){
            umel(nx,ny,c);
        }
    }
}
int main(){
    for(;;){
        scanf("%d %d\n",&H,&W);
        if(H==0&&W==0) break;
        for(int i=0;i<H;i++){
            for(int j=0;j<W;j++){
                scanf("%c",&ma[i][j]);
                vis[i][j]=false;
            }
            scanf("\n");
        }
        int ret=0;
        for(int i=0;i<H;i++){
            for(int j=0;j<W;j++){
                if(!vis[i][j]){
                    ret++;
                    umel(i,j,ma[i][j]);
                }
            }
        }
        printf("%d\n",ret);
    }
}