

const { notDeepEqual } = require("assert");
const { count } = require("console");
const fs = require("fs");
const { nextTick } = require("process");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./예제.txt";
let input = fs.readFileSync(filePath).toString().trim().split('\n');
// const fs = require('fs');
// let input = fs.readFileSync("/dev/stdin").toString().trim().split('\n');
let [M,N] = input.shift().split(' ').map((el)=>+el);
let chessArray=[];
for (let i=0;i<M;i++){
chessArray[i]=input.shift().split('');
}
const white=[
['W', 'B', 'W','B','W','B','W','B'],
['B', 'W','B','W','B','W','B', 'W'],
['W', 'B', 'W','B','W','B','W','B'],
['B', 'W','B','W','B','W','B', 'W'],
['W', 'B', 'W','B','W','B','W','B'],
['B', 'W','B','W','B','W','B', 'W'],
['W', 'B', 'W','B','W','B','W','B'],
['B', 'W','B','W','B','W','B', 'W'],
];
const black=[
['B', 'W','B','W','B','W','B', 'W'],
['W', 'B', 'W','B','W','B','W','B'],
['B', 'W','B','W','B','W','B', 'W'],
['W', 'B', 'W','B','W','B','W','B'],
['B', 'W','B','W','B','W','B', 'W'],
['W', 'B', 'W','B','W','B','W','B'],
['B', 'W','B','W','B','W','B', 'W'],
['W', 'B', 'W','B','W','B','W','B'],
];
let minArray=[]
const check=(x, y)=>{
let checkW=0;
let checkB=0;
for (let i=x;i<x+8;i++){
for (let j=y;j<y+8;j++){
if (chessArray[i][j]!==white[i-x][j-y]){
checkW+=1;
}
if (chessArray[i][j]!==black[i-x][j-y]){
checkB+=1;
}
}
}
let min=checkW>checkB?checkB:checkW;
return min
}
// 위에서부터 한 줄씩 찬찬히 내려보기
for (let i=0;i<=M-8;i++){
for (let j=0;j<=N-8;j++){
minArray.push(check(i,j));
}
}
console.log(Math.min(...minArray))