#include <iostream>
#include <cstdio>
using namespace std;
#define rep(i,n) for(int i=0;i<(n);++i)
#define rep1(i,n) for(int i=1;i<=(n);++i)
#define all(c) (c).begin(),(c).end()
string a[50];
bool isw[50][50],isb[50][50],visited[50][50];
int dx[4]={1,0,-1,0},dy[4]={0,1,0,-1},h,w;
void dfsw(int x,int y){
	visited[x][y]=1;
	isw[x][y]=1;
	rep(i,4){
		int nx=x+dx[i],ny=y+dy[i];
		if(0<=nx && nx<h && 0<=ny && ny<w && !visited[nx][ny] && a[nx][ny]=='.') dfsw(nx,ny);
	}
}
void dfsb(int x,int y){
	visited[x][y]=1;
	isb[x][y]=1;
	rep(i,4){
		int nx=x+dx[i],ny=y+dy[i];
		if(0<=nx && nx<h && 0<=ny && ny<w && !visited[nx][ny] && a[nx][ny]=='.') dfsb(nx,ny);
	}
}
int main(){
	while(true){
		cin>>w>>h;
		if(w==0)break;
		rep(i,h) rep(j,w) isw[i][j]=0,isb[i][j]=0;
		rep(i,h) cin >> a[i];
		rep(i,h) rep(j,w){
			if(a[i][j]=='W'){
				rep(ii,h) rep(jj,w) visited[ii][jj]=0;
				dfsw(i,j);
			}
			if(a[i][j]=='B'){
				rep(ii,h) rep(jj,w) visited[ii][jj]=0;
				dfsb(i,j);
			}
		}
		int cntb=0,cntw=0;
		rep(i,h) rep(j,w) if(a[i][j]=='.') {
			if(isw[i][j] && !isb[i][j]) cntw++;
			if(!isw[i][j] && isb[i][j]) cntb++;
		}
		cout << cntb << " " << cntw << endl;
	}
}