육각 보드

N×N 육각 판에서 색칠해야 할 칸들이 주어질 때, 변을 공유하는 칸끼리 다른 색이 되도록 하는 최소 색의 수를 구한다.

보통7그래프그리디완전 탐색구현아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

크기가 N×NN \times N인 육각 보드가 주어진다. 아래 그림은 N=1,2,3,4N = 1, 2, 3, 4인 경우이다.

ii번째 줄은 i1i-1번째 줄보다 오른쪽으로 반 칸 밀려 있다. 따라서 (i,j)(i, j)칸은 보드 안에 있는 (i,j1)(i, j-1), (i,j+1)(i, j+1), (i1,j)(i-1, j), (i1,j+1)(i-1, j+1), (i+1,j1)(i+1, j-1), (i+1,j)(i+1, j)칸과 변을 공유한다.

육각 보드의 일부 칸을 색칠하려고 한다. 변을 공유하는 두 칸은 같은 색으로 칠할 수 없다.

어떤 칸을 색칠해야 하는지 주어졌을 때, 필요한 색의 종류 수의 최솟값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 NN이 주어진다. (1N501 \le N \le 50)

둘째 줄부터 NN개의 줄에 걸쳐 각 칸의 정보가 주어진다. 각 줄은 길이가 NN인 문자열이다. 위에서 ii번째 줄(0iN10 \le i \le N-1)의 왼쪽에서 jj번째 문자(0jN10 \le j \le N-1)가 (i,j)(i, j)칸을 나타내고, '-'이면 색칠하지 않는 칸, 'X'이면 색칠해야 하는 칸이다.

출력

첫째 줄에 필요한 색의 종류 수의 최솟값을 출력한다. 색칠할 칸이 하나도 없으면 00을 출력한다.