0과 1로만 이루어진 행렬 A와 행렬 B가 있다. 이때, 행렬 A를 행렬 B로 바꾸는데 필요한 연산의 횟수의 최솟값을 구하는 프로그램을 작성하시오.
행렬을 변환하는 연산은 어떤 3×3크기의 부분 행렬에 있는 모든 원소를 뒤집는 것이다. (0 → 1, 1 → 0)
# 1080
import sys
input = lambda : sys.stdin.readline().strip()
n, m = map(int, input().split())
graph_a = [list(input()) for _ in range(n)]
graph_b = [list(input()) for _ in range(n)]
count = 0
for i in range(n-2):
for j in range(m-2):
if graph_a[i][j] != graph_b[i][j]:
for y in range(3):
for x in range(3):
ny, nx = i+y, j+x
if graph_a[ny][nx] == "0":
graph_a[ny][nx] = "1"
else:
graph_a[ny][nx] = "0"
count += 1
if graph_a == graph_b:
print(count)
else:
print("-1")