#include <bits/stdc++.h>
using namespace std;
int W, H;
char A[50][50];
int dd[5] = {0, 1, 0, -1, 0};
bool v[50][50], s[2][50][50];
bool isin(int y, int x) { return 0 <= y && y < H && 0 <= x && x < W; }
void dfs(int y, int x, int c) {
  if (v[y][x] || A[y][x] != '.') return;
  v[y][x] = true;
  s[c][y][x] = true;
  for (int i = (0); i < (4); i++)
    if (isin(y + dd[i], x + dd[i + 1])) dfs(y + dd[i], x + dd[i + 1], c);
}
int main(void) {
  while (cin >> W >> H, W || H) {
    for (int i = (0); i < (H); i++) cin >> A[i];
    for (int i = (0); i < (2); i++)
      for (int j = (0); j < (H); j++)
        for (int k = (0); k < (W); k++) s[i][j][k] = false;
    for (int i = (0); i < (H); i++)
      for (int j = (0); j < (W); j++)
        if (A[i][j] != '.') {
          for (int k = (0); k < (H); k++)
            for (int l = (0); l < (W); l++) v[k][l] = false;
          for (int k = (0); k < (4); k++)
            if (isin(i + dd[k], j + dd[k + 1]))
              dfs(i + dd[k], j + dd[k + 1], A[i][j] == 'B');
        }
    int ans[2] = {0, 0};
    for (int i = (0); i < (2); i++)
      for (int j = (0); j < (H); j++)
        for (int k = (0); k < (W); k++)
          if (s[1 - i][j][k] && !s[i][j][k]) ans[i]++;
    cout << ans[0] << " " << ans[1] << endl;
  }
}
