N, M = map(int, input().split())
map_list = [list(input()) for _ in range(N)]
min_num = None
for i in range(N - 7):
for j in range(M - 7):
num1, num2 = 0, 0
# W
for k in range(i, i + 8):
for l in range(j, j + 8):
if((k + l - i - j) % 2 == 0):
if(map_list[k][l] == 'B'):
num1 += 1
else:
if(map_list[k][l] == 'W'):
num1 += 1
#B
for k in range(i, i + 8):
for l in range(j, j + 8):
if((k + l - i - j) % 2 == 0):
if(map_list[k][l] == 'W'):
num2 += 1
else:
if(map_list[k][l] == 'B'):
num2 += 1
change_box = num1 if num1 < num2 else num2
if(min_num is None):
min_num = change_box
else:
min_num = change_box if min_num > change_box else min_num
print(min_num)
Case = int(input())
person_info = [list(map(int, input().split())) for _ in range(Case)]
rank_list = [1] * Case
for i in range(len(person_info)):
for j in range(len(person_info)):
# 나 자신과의 비교를 제외. 없어도 정답임
if(person_info[i][0] != person_info[j][0] and person_info[i][1] != person_info[j][1]):
if((person_info[i][0] > person_info[j][0]) and (person_info[i][1] > person_info[j][1])):
rank_list[j] += 1
print(*rank_list)
# 브루트포스 문제는 단순 무식하게 접근한다.
N = int(input())
print_num = 0
for i in range(1, N+1):
div_num = list(map(int, str(i)))
sum_num = i + sum(div_num)
if(sum_num == N):
print_num = i
break
print(print_num)