//Property Distrbution

#include<iostream>
#include<cstdio>
using namespace std;

char a[101][101];
bool used[101][101];
int co;
int h, w;

int dfs(int p, int q){
    char x;
    
    //?§?????????????????????????
    int dx[4] = {1,0,-1,0};
    int dy[4] = {0,1, 0,-1};
    
    //?????§?????¢?´¢???????????¨????????????
    if(used[p][q] == true) return 0;
    
    //?????£????????¨??????????????¨??????true
    used[p][q] = true;
    
    scanf("%s", &x);
    
    //??????????????§?§??????§??????????????????
    for(int i = 0; i < 4; i++){
        int nx = p + dx[i];
        int ny = q + dy[i];
        
        if(0 <= nx && nx < h && 0 <= ny && ny < w && a[nx][ny] == x){
            //?§??????§?????????????§??????????
            dfs(nx,ny);
        }
    }
    
    return 1;
}

int main(void){
  
    while(1){
        //????????\???
        cin >> h >> w;
        
        if(h == 0) break;
        
        //?????????
        for(int i = 0; i < h; i++)
             for(int j = 0; j < w; j++) cin >> a[i][j];
        
        for(int i = 0; i < h; i++)
            for(int j = 0; j < w; j++) used[i][j] = false;
    
         //?????????????????????dfs    ???????????????count????????????
        for(int i = 0; i < h; i++){
            for(int j = 0; j < w; j++) {
                if(dfs(i,j) == 1) co++; 
            }
        }
    cout << co << endl;
    }
    return 0;
    
}