#include<bits/stdc++.h>
using namespace std;

string field[50];
bool isUsed[50][50];
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
int black,white;
int w,h;

void dfs(int x,int y){
  isUsed[y][x]=true;
  if(field[y][x] == 'W'){
    white++;
  }else if(field[y][x] == 'B'){
    black++;
  }else{
    for(int i=0 ; i < 4 ; i++){
      int nx=x+dx[i],ny=y+dy[i];
      if(nx >= 0 && ny >= 0 && nx < w && ny < h && !isUsed[ny][nx]){
	dfs(nx,ny);
      }
    }
  }
}
int solve(int x,int y){
  black=0,white=0;
  for(int i=0 ; i < h ; i++){
    for(int j=0 ; j < w ; j++){
      isUsed[i][j]=false;
    }
  }
  dfs(x,y);
  if(black != 0 && white != 0){
    return 3;
  }else if(black == 0 && white != 0){
    return 1;
  }else if(black != 0 && white == 0){
    return 0;
  }
  return 3;
}
int main(){
  
  while(1){
    cin >>w>>h;
    if(w+h == 0)break;
    for(int i=0 ; i < h ; i++)cin >>field[i];
    int ans[3]={0,0,0};
    for(int i=0 ; i < h ; i++){
      for(int j=0 ; j < w ; j++){
	if(field[i][j] == '.'){
	  ans[solve(j,i)]++;
	}
      }
    }
    cout <<ans[0]<<" "<<ans[1]<<endl;
  }
  
  return 0;
}