/*
AizuOnline A2014
Maximum Sum Sequence
*/
#include <stdio.h>
#include <string.h>

int W,H;
char a[50][51];
char b[50][51];

void printa()
{
  int i;
  for(i=0;i<H;i++)
    {
      printf("%s\n",&(a[i]));
    }
}
void printb()
{
  int i;
  for(i=0;i<H;i++)
    {
      printf("%s\n",(char *)&(b[i]));
    }
}
void fill_black2(int y,int x)
{
  //printf("%d %d\n",x,y);
  if((x < 0)||(x > W-1)||(y < 0)||(y > H-1))
    return;
  if(a[y][x]=='.')
    {
      a[y][x] = 'b';
      fill_black2(y-1,x);
      fill_black2(y+1,x);
      fill_black2(y,x-1);
      fill_black2(y,x+1);
    }
}
void fill_black()
{
  int i,j;
  for(i=0;i<H;i++)
     for(j=0;j<W;j++)
       if(a[i][j]=='B')
	 {
	   fill_black2(i-1,j);
	   fill_black2(i+1,j);
	   fill_black2(i,j-1);
	   fill_black2(i,j+1);
	 }
}
void fill_white2(int y,int x)
{
  //printf("%d %d\n",x,y);
  if((x < 0)||(x > W-1)||(y < 0)||(y > H-1))
    return;
  if(b[y][x]=='.')
    {
      b[y][x] = 'w';
      fill_white2(y-1,x);
      fill_white2(y+1,x);
      fill_white2(y,x-1);
      fill_white2(y,x+1);
    }
}
void fill_white()
{
  int i,j;
  for(i=0;i<H;i++)
     for(j=0;j<W;j++)
       if(b[i][j]=='W')
	 {
	   fill_white2(i-1,j);
	   fill_white2(i+1,j);
	   fill_white2(i,j-1);
	   fill_white2(i,j+1);
	 }
}
void mokusan()
{
  int i,j;
  int wc,bc;

  bc=wc=0;
  for(i=0;i<H;i++)
     for(j=0;j<W;j++)
       {
	 if(a[i][j]=='b' && b[i][j]== '.')
	   bc ++;
	 if(a[i][j]=='.' && b[i][j]== 'w')
	   wc ++;
       }
  printf("%d %d\n",bc,wc);
}
main()
{
  int i,j;

  while(EOF!=scanf("%d %d",&W,&H) && (W || H))
    {
     for(i=0;i<H;i++)
	{
	  scanf("%s",(char *)&(a[i]));
	  strcpy((char *)&(b[i]),(char *)&(a[i]));
	}
     fill_black();
     //printa();
     fill_white();
     //printb();
     mokusan();
     //break;
    }
return(0);
}