#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int N,M,ans;
char map[50][50];
int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};

void dfs(int x,int y,char c)
{
	map[x][y]='.';
	for(int i = 0; i < 4;i++)
	{
		int nx = x + dx[i];
		int ny = y + dy[i];
		if(0 <= nx && nx < N && 0 <= ny && ny < M && map[nx][ny]==c){
			map[nx][ny]='.';
			dfs(nx,ny,c);
		}
	}
	return ;
}

int main()
{
	while(scanf("%d %d",&N,&M)!=EOF)
	{
		if(N==0&&M==0)
		  break;
		ans=0;
		for(int i=0; i < N;i++)
		{
			scanf("%s",map[i]);
		}
		for(int i = 0; i < N;i++)
		{
			for(int j = 0; j < M;j++){
				if(map[i][j]=='#'){
					dfs(i,j,'#');
					ans++;
				}
				else if(map[i][j]=='@'){
					dfs(i,j,'@');
					ans++;
				}
				else if(map[i][j]=='*'){
					dfs(i,j,'*');
					ans++;
				}
				
			}
		}
		printf("%d\n",ans);
	}

	return 0;
}
