#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <utility>
#include <cstring>
using namespace std;

#define rep(i,n) for(int i=0; i<n; i++)
typedef long long ll;

void init() {
    cin.tie(0);
    ios::sync_with_stdio(false);
}

char field[50][50];
bool checked[2][50][50];
int w, h;

void fill( int x, int y, int t ) {
	checked[t][y][x] = true;
	if( 0<=y-1 && !checked[t][y-1][x] && field[y-1][x]=='.' ) {
		fill( x, y-1, t );
	}
	if( y+1<h && !checked[t][y+1][x] && field[y+1][x]=='.' ) {
		fill( x, y+1, t );
	}
	if( 0<=x-1 && !checked[t][y][x-1] && field[y][x-1]=='.' ) {
		fill( x-1, y, t );
	}
	if( x+1<w && !checked[t][y][x+1] && field[y][x+1]=='.' ) {
		fill( x+1, y, t );
	}
}

int main() {
    init();
	while( cin >> w >> h, w||h ) {
		memset( field, 0, sizeof(field) );
		memset( checked, 0, sizeof(checked) );
		rep(y, h) {
			rep(x, w) {
				cin >> field[y][x];
			}
		}
		rep(y, h) {
			rep(x, w) {
				if( field[y][x] == 'W' ) {
					fill( x, y, 0 );
				} else if( field[y][x] == 'B' ) {
					fill( x, y, 1 );
				}
			}
		}
		int cntW=0, cntB=0;
		rep(y, h) {
			rep(x, w) {
				if( field[y][x]=='.' && checked[0][y][x] && !checked[1][y][x] )
					cntW++;
				if( field[y][x]=='.' && checked[1][y][x] && !checked[0][y][x] )
					cntB++;
			}
		}
		cout << cntB << ' ' << cntW << endl;
	}
	return 0;
}