#include <stdio.h>

int w,h;
int b_sum,w_sum;
char map[52][52];

int dx[4] = {1,-1,0,0};
int dy[4] = {0,0,1,-1};

void calc_area(int *b_sum,int *w_sum){
	int x,y;

  *b_sum = *w_sum = 0;

  for(y=0;y<h;y++){
    for(x=0;x<w;x++){
      if(map[y][x] == '.' + 1){
        (*b_sum)++;
      }
      else if(map[y][x] == '.' - 1){
        (*w_sum)++;
      }
    }
  }
}

void check_land(int x,int y,char color){
	int i;

	for(i=0;i<4;i++){
		int nx = x + dx[i];
		int ny = y + dy[i];

		if(nx>=0 && ny>=0 && nx<w && ny<h && (map[ny][nx]=='.' || map[ny][nx]=='.'+1)){
			if(color == 'B'){
				if(map[ny][nx] == '.'){
					map[ny][nx]++;
				}
				else{
					continue;
				}
			}
			else{
				if(map[ny][nx] == '.'){
					map[ny][nx]--;
				}
				else if(map[ny][nx] == '.' + 1){
					map[ny][nx]++;
				}
			}

			check_land(nx,ny,color);
		}
	}
}

void get_land(char color){
	int x,y;

	for(y=0;y<h;y++){
		for(x=0;x<w;x++){
			if(map[y][x] == color){
				check_land(x,y,color);
			}
		}
	}
}

int input_map(void){
	int y;

	scanf("%d%d",&w,&h);
	if(w==0 && h==0){
		return 0;
	}

	for(y=0;y<h;y++){
		scanf("%s",map[y]);
	}
	return 1;
}

int main(void){
	int b_sum,w_sum;

	while(1){
		if(input_map() == 0){
			break;
		}

		get_land('B');
		get_land('W');

		calc_area(&b_sum,&w_sum);

		printf("%d %d\n",b_sum,w_sum);
	}

	return 0;
}