체커보드 행렬 (작은 입력)
시간 제한5초메모리 제한512 MB
0과 1로 된 2N by 2N 행렬을 행과 열 교환으로 체커보드 형태로 만드는 최소 교환 횟수를 구합니다.
문제
미자는 심심할 때 행렬로 게임을 한다. 한 행렬을 다른 행렬로 바꾸되, 이동 횟수를 가장 적게 쓰는 것이 목표다. 미자에게 이동 한 번은 행렬의 두 행을 서로 바꾸거나 두 열을 서로 바꾸는 것이다.
오늘 미자가 다루는 행렬 은 크기가 이고, 각 칸에 0 또는 1이 들어 있다. 미자는 을 체커보드 행렬로 바꾸려고 한다. 체커보드 행렬은 모든 행과 모든 열에서 0과 1이 번갈아 나오는 행렬이다. 을 체커보드 행렬로 만드는 데 필요한 최소 이동 횟수를 구하라.
입력
첫 줄에 테스트 케이스의 개수 가 주어진다. 각 테스트 케이스의 첫 줄에는 정수 이 주어진다. 이어지는 개의 줄에는 각각 개의 문자가 주어지며, 이 줄들이 의 행이다. 각 문자는 0 또는 1이다.
제한
출력
각 테스트 케이스마다 "Case #x: y" 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 을 체커보드 행렬로 만드는 데 필요한 행 교환과 열 교환의 최소 횟수다. 어떤 순서로 이동해도 체커보드 행렬을 만들 수 없으면 y 자리에 IMPOSSIBLE을 출력한다.
힌트
예제의 첫 번째 케이스에서 은 이미 체커보드 행렬이다. 두 번째 케이스에서는 1열과 2열을 바꾼 다음 1행과 2행을 바꾸면 체커보드 행렬이 된다. 세 번째 케이스는 1의 개수가 모자라서 어떤 방법으로도 체커보드 행렬을 만들 수 없다.