#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

int dy[]={0,1,0,-1};
int dx[]={1,0,-1,0};
char m[50][51];
int w,h;

bool visit[50][50];
int flag;
int dfs(int y,int x){
	if(y<0||h<=y||x<0||w<=x || visit[y][x])return 0;
	if(m[y][x]=='B'){
		flag|=1;
		return 0;
	}
	if(m[y][x]=='W'){
		flag|=2;
		return 0;
	}
	visit[y][x]=true;
	int res=1;
	for(int i=0;i<4;i++){
		res += dfs(y+dy[i],x+dx[i]);
	}
	return res;
}
int main(){
	while(cin>>w>>h,w|h){
		int black=0,white=0;
		for(int i=0;i<h;i++)cin>>m[i];
		memset(visit,false,sizeof(visit));
		for(int y=0;y<h;y++){
			for(int x=0;x<w;x++){
				if(visit[y][x]||m[y][x]!='.')continue;
				flag=0;
				int s=dfs(y,x);
				if(flag==1)black+=s;
				else if(flag==2)white+=s;
			}
		}
		cout<<black<<' '<<white<<endl;
	}
	return 0;
}