#include <iostream>
using namespace std;

char a[51][51];
int w,h,bcount,wcount;
//?§??????????????????????????¢??????????????????????????????????????????????????????????????????????????????????
void white(int i,int j){
	if(a[i-1][j] == 'B' && i-1 >= 0){
		a[i][j] = 'n';
		return;
	}
	if(a[i+1][j] == 'B' && i+1 < h){
		a[i][j] = 'n';
		return;
	}
	if(a[i][j-1] == 'B' && j-1 >= 0){
		a[i][j] = 'n';
		return;
	}
	if(a[i][j+1] == 'B' && j+1 < w){
		a[i][j] = 'n';
		return;
	}
	if(a[i-1][j] == '.' && i-1 >= 0){
		a[i-1][j] = 'w';
		white(i-1,j);
	}
	if(a[i+1][j] == '.' && i+1 < h){
		a[i+1][j] = 'w';
		white(i+1,j);
	}
	if(a[i][j-1] == '.' && j-1 >= 0){
		a[i][j-1] = 'w';
		white(i,j-1);
	}
	if(a[i][j+1] == '.' && j+1 < w){
		a[i][j+1] = 'w';
		white(i,j+1);
	}
}

void black(int i,int j){
	if(a[i-1][j] == 'W' && i-1 >= 0){
		a[i][j] = 'n';
		return;
	}
	if(a[i+1][j] == 'W' && i+1 < h){
		a[i][j] = 'n';
		return;
	}
	if(a[i][j-1] == 'W' && j-1 >= 0){
		a[i][j] = 'n';
		return;
	}
	if(a[i][j+1] == 'W' && j+1 < w){
		a[i][j] = 'n';
		return;
	}
	if(a[i-1][j] == '.' && i-1 >= 0){
		a[i-1][j] = 'b';
		black(i-1,j);
	}
	if(a[i+1][j] == '.' && i+1 < h){
		a[i+1][j] = 'b';
		black(i+1,j);
	}
	if(a[i][j-1] == '.' && j-1 >= 0){
		a[i][j-1] = 'b';
		black(i,j-1);
	}
	if(a[i][j+1] == '.' && j+1 < w){
		a[i][j+1] = 'b';
		black(i,j+1);
	}
}

void none(int i,int j){
	if(a[i-1][j] == 'w' && i-1 >= 0){
		a[i-1][j] = 'n';
		none(i-1,j);
	}
	if(a[i+1][j] == 'w' && i+1 < h){
		a[i+1][j] = 'n';
		none(i+1,j);
	}
	if(a[i][j-1] == 'w' && j-1 >= 0){
		a[i][j-1] = 'n';
		none(i,j-1);
	}
	if(a[i][j+1] == 'w' && j+1 < w){
		a[i][j+1] = 'n';
		none(i,j+1);
	}
	if(a[i-1][j] == 'b' && i-1 >= 0){
		a[i-1][j] = 'n';
		none(i-1,j);
	}
	if(a[i+1][j] == 'b' && i+1 < h){
		a[i+1][j] = 'n';
		none(i+1,j);
	}
	if(a[i][j-1] == 'b' && j-1 >= 0){
		a[i][j-1] = 'n';
		none(i,j-1);
	}
	if(a[i][j+1] == 'b' && j+1 < w){
		a[i][j+1] = 'n';
		none(i,j+1);
	}
}


void check(){
	for(int i = 0;i < h;i++){
		for(int j = 0;j < w;j++){
			if(a[i][j] == 'W'){
				if(a[i-1][j] == '.' && i-1 >= 0){
					a[i-1][j] = 'w';
					white(i-1,j);
				}
				if(a[i+1][j] == '.' && i+1 < h){
					a[i+1][j] = 'w';
					white(i+1,j);
				}
				if(a[i][j-1] == '.' && j-1 >= 0){
					a[i][j-1] = 'w';
					white(i,j-1);
				}
				if(a[i][j+1] == '.' && j+1 < w){
					a[i][j+1] = 'w';
					white(i,j+1);
				}
			}
			else if(a[i][j] == 'B'){
				if(a[i-1][j] == '.' && i-1 >= 0){
					a[i-1][j] = 'b';
					black(i-1,j);
				}
				if(a[i+1][j] == '.' && i+1 < h){
					a[i+1][j] = 'b';
					black(i+1,j);
				}
				if(a[i][j-1] == '.' && j-1 >= 0){
					a[i][j-1] = 'b';
					black(i,j-1);
				}
				if(a[i][j+1] == '.' && j+1 < w){
					a[i][j+1] = 'b';
					black(i,j+1);
				}
			}
		}
	}
	for(int i = 0;i < h;i++){
		for(int j = 0;j < w;j++){
			if(a[i][j] == 'n'){
				none(i,j);
			}
		}
	}
}

int main(){
	while(1){
		cin >> w >> h;
		if(h == 0)break;
		bcount = wcount = 0;
		for(int i = 0;i < 51;i++){
			for(int j = 0;j < 51;j++){
				a[i][j] = '0';
			}
		}
		for(int i = 0;i < h;i++){
			for(int j = 0;j < w;j++){
				cin >> a[i][j];
			}
		}
	check();

	for(int i = 0;i < h;i++){
		for(int j = 0;j < w;j++){
			if(a[i][j] == 'w')wcount++;
			if(a[i][j] == 'b')bcount++;
			//cout << a[i][j];
		}
		//cout << endl;
	}
	cout << bcount << " " << wcount <<endl;
	}
	return 0;
}

Measured memory_bytes: 1308