# 체스판 다시 칠하기
n, m = map(int, input().split())
origin = []
cnt = []
for _ in range(n):
origin.append(input())
for a in range(n-7):
for b in range(m-7): # 8*8로 자르기 위해, -7을 해준다.
w_index=0 # 흰색으로 시작
b_index=0 # 검은색으로 시작
for i in range(a, a+8): # 시작지점
for j in range(b, b+8): # 시작지점
if (i+j)%2==0: # 짝수인 경우
if origin[i][j] != 'W': # W가 아니면, 즉 B이면
w_index+=1 # W로 칠하는 갯수
else: # W일 때
b_index+=1 # B로 칠하는 갯수
else: # 홀수인 경우
if origin[i][j]!='W':
b_index+=1
else:
w_index+=1
cnt.append(w_index) # W로 시작할 때 경우의 수
cnt.append(b_index) # B로 시작할 때 경우의 수
print(min(cnt))
내 코드 아니고 남들이 푼거 배껴온 것.
이건 진심으로 이해가 안간다. BOJ 문제 3개월차 인데 이렇게 이해가 안가기는 또 처음이라
몇 일 동안 이해 기간을 가지고 풀이를 들고 와보겠읍디다,,,