#include <stdio.h>

const int MAX_H = 110, MAX_W = 110;
int H, W;

char field[MAX_H][MAX_W];

int dh[4] = {1, 0, -1, 0};
int dw[4] = {0, 1, 0, -1};

bool infield(int h, int w){
    return (0<=h && h<H && 0<=w && w<W);
}

void dfs(int h, int w){
    //果物の定義
    char fruits = field[h][w];
    field[h][w] = '.';
    for(int i=0; i<4; i++){
        int nh = h+dh[i];
        int nw = w+dw[i];
        if(infield(nh, nw) && field[nh][nw]==fruits)
            dfs(nh, nw);
    }
}

void solve(){
    int ans = 0;
    for(int i=0; i<H; i++){
        for(int j=0; j<W; j++){
            //更新された点は'.'にする
            if(field[i][j] != '.'){
                dfs(i, j);
                ans++;
            }
        }
    }
    printf("%d\n", ans);
}

int main(){
    
    while(scanf("%d%d", &H, &W), H|W){
        for(int i=0; i<H; i++)
            scanf("%s", field[i]);
        solve();
    }
    return 0;
}