import sysfrom collections import dequesys.setrecursionlimit(10000) # 재귀 제한 해제 (DFS 쓸 경우 대비)N = int(sys.stdin.readline()) # 색상 격자 입력 받기grid = [list(sys.stdin.readline().strip()) for _ in range(N)] # 상하좌우 방향 정의dx = [0, 0, 1, -1]dy = [1, -1, 0, 0] # BFS로 한 구역 탐색하는 함수def bfs(x, y, visited, board, is_amblyopia): queue = deque() queue.append((x, y)) visited[x][y] = True # 현재 위치 방문 처리 current_color = board[x][y] while queue: cx, cy = queue.popleft() for i in range(4): nx, ny = cx + dx[i], cy + dy[i] # 범위를 벗어나거나 이미 방문한 경우 무시 if 0 <= nx < N and 0 <= ny < N and not visited[nx][ny]: next_color = board[nx][ny] if is_amblyopia: # 적록색약인 경우: R과 G는 같은 색으로 간주 if (current_color in "RG" and next_color in "RG") or current_color == next_color: visited[nx][ny] = True queue.append((nx, ny)) else: # 일반인: 정확히 같은 색만 같은 구역 if next_color == current_color: visited[nx][ny] = True queue.append((nx, ny)) # 전체 격자를 순회하면서 BFS 시작 지점을 찾아 구역 수 세기def count_areas(is_amblyopia): visited = [[False]*N for _ in range(N)] count = 0 for i in range(N): for j in range(N): if not visited[i][j]: bfs(i, j, visited, grid, is_amblyopia) count += 1 # BFS 한 번 돌면 하나의 구역 return count # 결과 계산 및 출력normal = count_areas(False) # 일반인의 시각color_blind = count_areas(True) # 적록색약인의 시각print(normal, color_blind)