//池塘青草块数问题(poj)同
#include<iostream>
#include<cstring>#include<cstdio>
using namespace std;
int a,b=0,c=0,d,e;
char shz1[100+10][100+10];
int shz2[100+10][100+10];
void dfs(int i,int j){
if(i<0||i>=a||j<0||j>=a)return ;
if(shz2[i][j]==1)return ;
if(shz1[i][j]=='W'){
d=1;
return;
}
if(shz1[i][j]=='B'){
d=2;
return;
}
shz2[i][j]=1;
e++;
dfs(i-1,j);
dfs(i+1,j);
dfs(i,j-1);
dfs(i,j+1);
}
int main(){
cin>>a;
memset(shz2,0,sizeof(shz2));
for(int i=0;i<a;i++){
for(int j=0;j<a;j++){
cin>>shz1[i][j];
if(shz1[i][j]=='B')b++;
else if(shz1[i][j]=='W')c++;
}
}
for(int i=0;i<a;i++){
for(int j=0;j<a;j++){
e=0;
if(shz1[i][j]=='.')dfs(i,j);
if(d==1)c+=e;
else if(d==2)b+=e;
}
}
printf("%d %d",b,c);
return 0;
}
//躺过的简单题,哭