#include<cstdio>
#include<cstring>
#define rep(i,n) for(int i=0;i<(n);i++)
#define reg(i,a,b) for(int i=(a);i<=(b);i++)

int w,h;
char map[55][55];
int bn=0,wn=0;
bool isb,isw;

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

int dfs(int y,int x){
	int res=0;
	switch(map[y][x]){
	case 0:
		return 0;
	case 'W':
		isw = true;
		return 0;
	case 'B':
		isb = true;
		return 0;
	case '.':
		map[y][x] = 0;
		res++;
		rep(i,4){
			res += dfs(y+dy[i],x+dx[i]);
		}
		return res;
	}
}

void sdfs(int y,int x){
	isb = isw = false;
	int no = dfs(y,x);
	if(isw && (!isb))wn+=no;
	else if(isb && (!isw))bn+=no;
}

int main(void){
	while(1){
		scanf("%d%d",&w,&h);
		if(w==0)break;
		memset(map,0,sizeof(map));
		rep(y,h){
			scanf("%s",map[y+1]+1);
		}
		wn=bn=0;
		reg(y,1,h){
			reg(x,1,w){
				if(map[y][x]=='.'){
					sdfs(y,x);
				}
			}
		}
		printf("%d %d\n",bn,wn);
	}
	return 0;
}