#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>

#define lengthof(x) (sizeof(x) / sizeof(*(x)))

using namespace std;

int w,h;
char inpMap[51][51]={'0'},ctemp;
const int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};

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

		if(0<=nx && nx<w && 0<=ny && ny<h){
			if(inpMap[ny][nx]=='.'){
				inpMap[ny][nx]=ctemp;//(moji=='W')? 'w' : 'b';
				dfs(ny,nx,moji);
			}
			else if((moji=='B'&&inpMap[ny][nx]=='w')||(moji=='W'&&inpMap[ny][nx]=='b')){
				inpMap[ny][nx]='?';
				dfs(ny,nx,moji);
			}
		}
	}
}


void solve(int y, int x,char moji){
	if(moji=='W'){
		ctemp='w';
	}
	else if(moji=='B'){
		ctemp='b';
	}
	dfs(y,x,moji);
}


int main(){
	

	while(cin>>w>>h,w||h){
		int white=0,black=0;

		fill((int *)inpMap,(int *)inpMap+lengthof(inpMap),'0');
		
		for(int i=0;i<h;i++){
			for(int j=0;j<w;j++){
				cin>>inpMap[i][j];
			}
		}

		for(int i=0;i<h;i++){
			for(int j=0;j<w;j++){
				if(inpMap[i][j]=='W' || inpMap[i][j]=='B'){
					solve(i,j,inpMap[i][j]);
				}
			}
		}

		for(int i=0;i<h;i++){
			for(int j=0;j<w;j++){
				if(inpMap[i][j]=='b'){
					black++;
				}
				else if(inpMap[i][j]=='w'){
					white++;
				}
			}
		}
		
		cout<<black<<' '<<white<<endl;
	}
}