#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<vector<char> > map;
char W[8][8] = {
{ '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' } };
char B[8][8] = {
{ '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' } };
void revise(int y, int x);
int n, m;
int Min;
int main()
{
cin >> n >> m;
for (int i = 0; i < n; i++)
{
vector<char>temp(m);
map.push_back(temp);
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> map[i][j];
}
}
for (int i = 0; i < n - 8 + 1; i++)
{
for (int j = 0; j < m - 8 + 1; j++)
{
revise(i, j);
}
}
cout << Min << endl;
return 0;
}
void revise(int y, int x)
{
int cnt = 0;
int cnt2 = 0;
int k = 0;
for (int i = y; i < y + 8; i++)
{
int z = 0;
for (int j = x; j < x + 8; j++)
{
if (map[i][j] != W[k][z])
{
cnt++;
}
z++;
}
k++;
}
/////////////////
k = 0;
for (int i = y; i < y + 8; i++)
{
int z = 0;
for (int j = x; j < x + 8; j++)
{
if (map[i][j] != B[k][z])
{
cnt2++;
}
z++;
}
k++;
}
Min = min(cnt, cnt2);
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KI2luY2x1ZGU8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPHZlY3RvcjxjaGFyPiA+IG1hcDsKCmNoYXIgV1s4XVs4XSA9IHsgCnsgJ1cnLCdCJywnVycsJ0InLCdXJywnQicsJ1cnLCdCJyB9LAp7J0InLCdXJywnQicsJ1cnLCdCJywnVycsJ0InLCdXJyB9LAp7ICdXJywnQicsJ1cnLCdCJywnVycsJ0InLCdXJywnQicgfSwKeyAnQicsJ1cnLCdCJywnVycsJ0InLCdXJywnQicsJ1cnIH0sCnsgJ1cnLCdCJywnVycsJ0InLCdXJywnQicsJ1cnLCdCJyB9LAp7ICdCJywnVycsJ0InLCdXJywnQicsJ1cnLCdCJywnVycgfSwKeyAnVycsJ0InLCdXJywnQicsJ1cnLCdCJywnVycsJ0InIH0sCnsgJ0InLCdXJywnQicsJ1cnLCdCJywnVycsJ0InLCdXJyB9IH07CgpjaGFyIEJbOF1bOF0gPSB7CnsgJ0InLCdXJywnQicsJ1cnLCdCJywnVycsJ0InLCdXJyB9LAp7ICdXJywnQicsJ1cnLCdCJywnVycsJ0InLCdXJywnQicgfSwKeyAnQicsJ1cnLCdCJywnVycsJ0InLCdXJywnQicsJ1cnIH0sCnsgJ1cnLCdCJywnVycsJ0InLCdXJywnQicsJ1cnLCdCJyB9LAp7ICdCJywnVycsJ0InLCdXJywnQicsJ1cnLCdCJywnVycgfSwKeyAnVycsJ0InLCdXJywnQicsJ1cnLCdCJywnVycsJ0InIH0sCnsgJ0InLCdXJywnQicsJ1cnLCdCJywnVycsJ0InLCdXJyB9LAp7ICdXJywnQicsJ1cnLCdCJywnVycsJ0InLCdXJywnQicgfSB9OwoKdm9pZCByZXZpc2UoaW50IHksIGludCB4KTsKaW50IG4sIG07CgppbnQgTWluOwoKaW50IG1haW4oKQp7CgljaW4gPj4gbiA+PiBtOwoKCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJewoJCXZlY3RvcjxjaGFyPnRlbXAobSk7CgkJbWFwLnB1c2hfYmFjayh0ZW1wKTsKCX0KCglmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKCXsKCQlmb3IgKGludCBqID0gMDsgaiA8IG07IGorKykKCQl7CgkJCWNpbiA+PiBtYXBbaV1bal07CgkJfQoJfQoKCgoKCWZvciAoaW50IGkgPSAwOyBpIDwgbiAtIDggKyAxOyBpKyspCgl7CgkJZm9yIChpbnQgaiA9IDA7IGogPCBtIC0gOCArIDE7IGorKykKCQl7CgkJCXJldmlzZShpLCBqKTsKCgkJfQoJfQoKCgljb3V0IDw8IE1pbiA8PCBlbmRsOwoKCXJldHVybiAwOwp9Cgp2b2lkIHJldmlzZShpbnQgeSwgaW50IHgpCnsKCWludCBjbnQgPSAwOwoJaW50IGNudDIgPSAwOwoKCQlpbnQgayA9IDA7CgkJZm9yIChpbnQgaSA9IHk7IGkgPCB5ICsgODsgaSsrKQoJCXsKCQkJaW50IHogPSAwOwoJCQlmb3IgKGludCBqID0geDsgaiA8IHggKyA4OyBqKyspCgkJCXsKCQkJCWlmIChtYXBbaV1bal0gIT0gV1trXVt6XSkKCQkJCXsKCQkJCQljbnQrKzsKCQkJCX0KCQkJCXorKzsKCQkJfQoJCQlrKys7CgkJfQoKCQkvLy8vLy8vLy8vLy8vLy8vLwoKCQkgayA9IDA7CgkJZm9yIChpbnQgaSA9IHk7IGkgPCB5ICsgODsgaSsrKQoJCXsKCQkJaW50IHogPSAwOwoJCQlmb3IgKGludCBqID0geDsgaiA8IHggKyA4OyBqKyspCgkJCXsKCQkJCWlmIChtYXBbaV1bal0gIT0gQltrXVt6XSkKCQkJCXsKCQkJCQljbnQyKys7CgkJCQl9CgkJCQl6Kys7CgkJCX0KCQkJaysrOwoJCX0KCgoJTWluID0gbWluKGNudCwgY250Mik7CgoKfQ==