#include <bits/stdc++.h>
using namespace std;
int X[4] = {0, 0, -1, 1};
int Y[4] = {-1, 1, 0, 0};
int w, h;
int ans[50][50];
int step1(int x, int y) {
  bool w(false), b(false);
  for (int i = 0; i < 4; i++) {
    if (ans[x + X[i]][y + Y[i]] == -1) {
      b = true;
    }
    if (ans[x + X[i]][y + Y[i]] == -2) {
      w = true;
    }
  }
  if (w && b) {
    return 3;
  } else if (w && !b) {
    return 2;
  } else if (!w && b) {
    return 1;
  } else if (!w && !b) {
    return 0;
  }
}
void step2(int x, int y, int z) {
  ans[x][y] = z;
  for (int i = 0; i < 4; i++) {
    if (x + X[i] < w && x + X[i] > -1 && y + Y[i] < h && y + Y[i] > -1) {
      if (ans[x + X[i]][y + Y[i]] == 0) {
        step2(x + X[i], y + Y[i], z);
      }
    }
  }
}
int main() {
  while (cin >> w >> h && !(w == 0 && h == 0)) {
    for (int i = 0; i < 50; i++) {
      for (int j = 0; j < 50; j++) {
        ans[j][i] = 0;
      }
    }
    for (int i = 0; i < h; i++) {
      for (int j = 0; j < w; j++) {
        char tmp;
        cin >> tmp;
        switch (tmp) {
          case 'B':
            ans[j][i] = -1;
            break;
          case 'W':
            ans[j][i] = -2;
            break;
        }
      }
    }
    for (int i = 0; i < h; i++) {
      for (int j = 0; j < w; j++) {
        if (ans[j][i] == 0 && step1(j, i) == 3) {
          step2(j, i, 3);
        }
      }
    }
    for (int i = 0; i < h; i++) {
      for (int j = 0; j < w; j++) {
        if (ans[j][i] == 0 && step1(j, i) == 2) {
          step2(j, i, 2);
        }
      }
    }
    for (int i = 0; i < h; i++) {
      for (int j = 0; j < w; j++) {
        if (ans[j][i] == 0 && step1(j, i) == 1) {
          step2(j, i, 1);
        }
      }
    }
    int ans1(0), ans2(0);
    for (int i = 0; i < h; i++) {
      for (int j = 0; j < w; j++) {
        if (ans[j][i] == 1) {
          ans1++;
        }
        if (ans[j][i] == 2) {
          ans2++;
        }
      }
    }
    cout << ans1 << " " << ans2 << endl;
  }
  return 0;
}
