#include <bits/stdc++.h>
using namespace std;
const double eps=1e-9;
typedef vector<int> vi;
typedef long long ll;
int H,W;
bool used[55][55];
bool black[55][55];
bool white[55][55];
string board[55];
int dx[]={-1,0,1,0};
int dy[]={0,-1,0,1};
bool outrange(int y,int x,int turn)
{
  if(y<0 || y>=H || x<0 || x>=W || used[y][x])
    {
      return true;
    }
  if(turn==0 && board[y][x]=='W') return true;
  else if(turn==1 && board[y][x]=='B') return true;
  else return false;
}
void bfs(int y,int x,int turn)
{
  used[y][x]=true;
  if(turn==0) black[y][x]=true;
  if(turn==1) white[y][x]=true;
  for(int k=0;k<4;k++)
    {
      int ny=y+dy[k];
      int nx=x+dx[k];
      if(!outrange(ny,nx,turn))
	{
	  bfs(ny,nx,turn);
	}
    }
}

int main(void)
{
  while(cin >> W >> H&& W)
    {
      int bnum=0;
      int wnum=0;
      memset(used,false,sizeof(used));
      memset(black,false,sizeof(black));
      memset(white,false,sizeof(white));
      for(int i=0;i<H;i++)
	{
	  cin >> board[i];
	}
      for(int i=0;i<H;i++)
	{
	  for(int j=0;j<W;j++)
	    {
	      if(board[i][j]=='B' && !used[i][j]) bfs(i,j,0);
	    }
	}
      memset(used,false,sizeof(used));
      for(int i=0;i<H;i++)
	{
	  for(int j=0;j<W;j++)
	    {
	      if(board[i][j]=='W' && !used[i][j]) bfs(i,j,1);
	    }
	}
      for(int i=0;i<H;i++)
	{
	  for(int j=0;j<W;j++)
	    {
	      if(board[i][j]=='.' &&black[i][j]&&!white[i][j]) bnum++;
	      if(board[i][j]=='.' && white[i][j]&&!black[i][j]) wnum++;
	    }
	}
      cout << bnum << ' ' << wnum << endl;
    }
  return 0;
}

