(1회차 시도 성공!)
import java.io.*;
import java.util.*;
public class Main {
static char[][] arr;
static char[][] blind;
static boolean[][] visited;
static int[] dx = {-1,1,0,0};
static int[] dy = {0,0,-1,1};
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
arr = new char[n][n];
blind = new char[n][n];
for (int i = 0; i < n; i++) {
String[] input = br.readLine().split("");
for (int j = 0; j < n; j++) {
arr[i][j] = input[j].charAt(0);
if(input[j].charAt(0) == 'G'){
blind[i][j] = 'R';
}else{
blind[i][j] = input[j].charAt(0);
}
}
}
int count1 = 0;
int count2 = 0;
visited = new boolean[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if(!visited[i][j]){
bfs(n, i,j, arr[i][j], arr);
count1++;
}
}
}
visited = new boolean[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if(!visited[i][j]){
bfs(n, i,j, blind[i][j], blind);
count2++;
}
}
}
bw.write(count1 + " " + count2);
br.close();
bw.close();
}
private static void bfs(int n, int y, int x, char color, char[][] tmp) {
Queue<int[]> q = new LinkedList<>();
q.add(new int[] {y,x});
visited[y][x] = true;
while(!q.isEmpty()){
int[] arr = q.poll();
for (int i = 0; i < 4; i++) {
int ny = arr[0] + dy[i];
int nx = arr[1] + dx[i];
if(ny >= 0 && nx >= 0 && ny < n && nx < n && !visited[ny][nx] && tmp[ny][nx] == color){
visited[ny][nx] = true;
q.add(new int[] {ny,nx});
}
}
}
}
}