육각 보드
시간 제한2초메모리 제한512 MB
N×N 육각 판에서 색칠해야 할 칸들이 주어질 때, 변을 공유하는 칸끼리 다른 색이 되도록 하는 최소 색의 수를 구한다.
문제
크기가 인 육각 보드가 주어진다. 아래 그림은 인 경우이다.

번째 줄은 번째 줄보다 오른쪽으로 반 칸 밀려 있다. 따라서 칸은 보드 안에 있는 , , , , , 칸과 변을 공유한다.
육각 보드의 일부 칸을 색칠하려고 한다. 변을 공유하는 두 칸은 같은 색으로 칠할 수 없다.
어떤 칸을 색칠해야 하는지 주어졌을 때, 필요한 색의 종류 수의 최솟값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 이 주어진다. ()
둘째 줄부터 개의 줄에 걸쳐 각 칸의 정보가 주어진다. 각 줄은 길이가 인 문자열이다. 위에서 번째 줄()의 왼쪽에서 번째 문자()가 칸을 나타내고, '-'이면 색칠하지 않는 칸, 'X'이면 색칠해야 하는 칸이다.
출력
첫째 줄에 필요한 색의 종류 수의 최솟값을 출력한다. 색칠할 칸이 하나도 없으면 을 출력한다.