#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
const int Max=100+9;
char a[Max][Max];
bool vis[Max][Max];
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
int n,m;
int ans=1;
void dfs(int x,int y){
    vis[x][y]=1;
    for(int i=0;i<4;i++){
        int nx=x+dx[i];
        int ny=y+dy[i];
        if(nx>n||nx<1||ny>m||ny<1||vis[nx][ny]){
            //cout<<x<<"!!"<<y<<"!!!"<<nx<<"!!!!"<<ny<<"!!!"<<a[x][y]<<"!"<<a[nx][ny]<<endl;
            continue;
        }
        
        if(a[x][y]==a[nx][ny]){
            vis[nx][ny]=1;
            dfs(nx,ny);
        }
    }
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    while(1){
        memset(vis,0,sizeof(vis));
        ans=0;
        cin>>n>>m;
        if(!n&&!m){
            break;
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                cin>>a[i][j];
            }
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                if(!vis[i][j]){
                    ans++;
                    dfs(i,j);
                    //cout<<i<<"!!"<<j<<endl;
                }
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}
