#include<bits/stdc++.h>
#define _ ios_base::sync_with_stdio(0);cin.tie(0);
#define REP(i,n) for(int i=0;i<(int)(n);i++)

using namespace std;

const int MAX_W=50;

char a[MAX_W][MAX_W];
bool checked[MAX_W][MAX_W];
int w,h;

pair<int,char> dfs(int x,int y){
  if(x<0||y<0||x>=w||y>=h) return make_pair(0,0);
  if(a[y][x]==1) return make_pair(0,1);
  if(a[y][x]==2) return make_pair(0,2);
  if(checked[y][x]) return make_pair(0,0);
  checked[y][x]=true;
  pair<int,char> l=dfs(x-1,y);
  pair<int,char> u=dfs(x,y-1);
  pair<int,char> r=dfs(x+1,y);
  pair<int,char> d=dfs(x,y+1);
  char c=l.second|u.second|r.second|d.second;
  if(c==255||c==3) return make_pair(0,255);
  if(c!=0) return make_pair(l.first+u.first+r.first+d.first+1,c);
  return make_pair(l.first+u.first+r.first+d.first+1,0);
}

int main(){ _;
  while(cin>>w>>h,(w|h)!=0){
    REP(i,h)REP(j,w){
      cin>>a[i][j];
      a[i][j]=a[i][j]=='B'?1:a[i][j]=='W'?2:0;
    }
    REP(i,h)REP(j,w) checked[i][j]=false;
    int area_b=0,area_w=0;
    REP(i,h)REP(j,w){
      pair<int,char> p=dfs(j,i);
      if(p.second==1) area_b+=p.first;
      else if(p.second==2) area_w+=p.first;
    }
    cout<<area_b<<" "<<area_w<<endl;
  }
}