#include<queue>
#include<cstdio>

#define	mp	make_pair

using namespace std;

typedef	pair<int,int>	pii;

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

int main(){
	for(int w,h;scanf("%d%d",&w,&h),w;){
		static char land[50][51];
		static bool visited[50][50];
		for(int i=0;i<h;i++){
			scanf("%s",land[i]);
			for(int j=0;j<w;j++)	visited[i][j]=false;
		}

		int bcnt=0,wcnt=0;
		for(int i=0;i<h;i++)for(int j=0;j<w;j++){
			if(land[i][j]!='.' || visited[i][j])	continue;
			visited[i][j]=true;
			int cnt=1;
			bool blk=false,wht=false;
			queue<pii> qu;	qu.push(mp(i,j));
			while(!qu.empty()){
				pii a=qu.front();	qu.pop();
				int x=a.second,y=a.first;
				for(int k=0;k<4;k++){
					int xx=x+dx[k],yy=y+dy[k];
					if(0<=xx && xx<w && 0<=yy && yy<h && !visited[yy][xx]){
						if(land[yy][xx]=='B'){ blk=true; continue; }
						if(land[yy][xx]=='W'){ wht=true; continue; }
						if(land[yy][xx]=='.'){
							qu.push(mp(yy,xx));
							visited[yy][xx]=true;
							cnt++;
						}
					}
				}
			}
			if(blk && !wht)	bcnt+=cnt;
			if(wht && !blk)	wcnt+=cnt;
		}

		printf("%d %d\n",bcnt,wcnt);
	}

	return 0;
}