#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
const int INF=5;
int state[50][50];
char fld[50][51];
int h,w;
const int dx[]={0,-1,0,1};
const int dy[]={-1,0,1,0};
void dfs(int y,int x,int clr){
    if(y<0||y>=h||x<0||x>=w)return;
    if(state[y][x]==INF)return;
    if(fld[y][x]!='.')return;
    if(state[y][x]==clr)return;
    if(-state[y][x]==clr)state[y][x]=INF;
    else state[y][x]=clr;
    for(int i=0;i<4;i++)dfs(y+dy[i],x+dx[i],clr);
}
void debug(){
    puts("---debug---");
    for(int i=0;i<h;i++){
        for(int j=0;j<w;j++)printf("%2d ",state[i][j]);
        puts("");
    }
}
int main(){
    while(scanf("%d%d",&w,&h),w||h){
        for(int i=0;i<h;i++)scanf("%s",fld[i]);
        fill_n(*state,50*50,0);
        for(int i=0;i<h;i++){
            for(int j=0;j<w;j++){
                if(fld[i][j]=='.')continue;
                int clr=(fld[i][j]=='B'?1:-1);
                for(int k=0;k<4;k++)dfs(i+dy[k],j+dx[k],clr);
            }
        }
        //debug();
        int B=0,W=0;
        for(int i=0;i<h;i++){
            B+=count(state[i],state[i]+w,1);
            W+=count(state[i],state[i]+w,-1);
        }
        printf("%d %d\n",B,W);
    }

    return 0;
}