N, M = map(int, input().split())
board = [input().strip() for _ in range(N)]
#체스판 색을 체크하는 함수다
def count(x, y):
re_w, re_b = 0, 0
for i in range(8):
for j in range(8):
if (i + j) % 2 == 0: #위치가 홀수인지 짝수인지에 따라 색을 판단한다
if board[y + i][x + j] != 'W':
re_w += 1
if board[y + i][x + j] != 'B':
re_b += 1
else: # 반대색 칸
if board[y + i][x + j] != 'B':
re_w += 1
if board[y + i][x + j] != 'W':
re_b += 1
return min(re_w, re_b)
#덜 칠하는 걸 반환한다
min_re = 64 #초기값을 정해준다
#모든 경우의 수를 탐색하게 한다
for y in range(N - 7):
for x in range(M - 7):
min_re = min(min_re, count(x, y))
#기존의 값과 새로 최솟값이라고 나온 값을 비교한다.
print(min_re)
import sys
input = sys.stdin.readline
# 초기 문자열이다
Q = list(input().strip())
M = int(input())
left = Q # 커서 왼쪽으로 입력받은 문자열의 가장 처음이다.
right = [] # 커서 오른쪽으로 아직 비어있다
#에디터기능을 수행한다
#입력받는 것을 text라는 배열로 만들어 확인한다
for _ in range(M):
text = input().split()
if text[0] == 'L':
if left:
right.append(left.pop())
elif text[0] == 'D':
if right:
left.append(right.pop())
elif text[0] == 'B':
if left:
left.pop()
elif text[0] == 'P':
left.append(text[1])
# 최종 문자열을 출력한다
print(''.join(left + right [::-1]))