시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
5 초 128 MB 60 13 6 18.750%

문제

크기가 r×c인 행렬이 주어진다. 행렬의 각 원소는 0 또는 1이다. 행렬이 수행할 수 있는 연산은 원소 하나를 뒤집는 것이다. (0을 1로, 1을 0으로) 상근이는 다음과 같은 조건을 만족하는 행렬로 바꾸려고 한다.

  1. 각 행에 있는 1의 개수는 모두 같아야 한다.
  2. 각 열에 있는 1의 개수는 모두 같아야 한다.

입력으로 주어진 행렬을 위의 조건을 만족하는 행렬로 만드는데 필요한 연산의 최소 횟수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 T(≤1000)가 주어진다.

각 테스트 케이스의 첫째 줄에는 두 정수 r과 c가 주어진다. (1 ≤ r, c ≤ 40) r은 행의 수, c는 열의 수이다. 다음 r개 줄에는 c개의 정수가 주어지며, 행렬의 정보이다.

출력

각 테스트 케이스마다 "Case #: R"을 출력한다. #는 테스트 케이스의 번호이고, R은 입력으로 주어진 행렬을 문제의 조건에 맞는 행렬로 바꾸는데 필요한 연산의 최소 횟수이다. 불가능한 경우에는 R에 -1을 출력한다.

예제 입력

3
2 3
111
111
3 3
011
011
011
2 3
001
000

예제 출력

Case 1: 0
Case 2: 3
Case 3: 1

힌트