直角
// 1是黑,0是白
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;
#define ll long long
int mp[105][105], tmp[105][105];
char in[105][105];
int main()
{
int i, j, n, m;
cin >> n;
m = n;
for (i = 1; i <= n; i++)
{
for (j = 1; j <= m; j++)
{
cin >> in[i][j];
if (in[i][j] == 'b')
{
mp[i][j] = 1;
}
else
{
mp[i][j] = 0;
}
}
}
int min_ = 1e9;
for (int state = 0; state < (1 << m); state++)
{
for (j = 1; j <= m; j++)
{
tmp[1][j] = state >> (j - 1) & 1;
}
int tot = 0;
for (i = 1; i <= n; i++)
{
for (j = 1; j <= m; j++)
{
tmp[i + 1][j] = mp[i][j] ^ tmp[i][j] ^ tmp[i - 1][j] ^ tmp[i][j - 1] ^ tmp[i][j + 1];
tot += tmp[i][j];
}
}
int white = 0, black = 0;
bool flag = 1;
for (i = 1; i <= n; i++)
{
if (tmp[n + 1][i] == 0)
{
white++;
if (black > 0)
{
flag = 0;
break;
}
}
else
{
black++;
if (white > 0)
{
flag = 0;
break;
}
}
}
if (flag && tot < min_)
{
min_ = tot;
}
}
if (min_ == 1e9)
{
cout << "Impossible";
return 0;
}
cout << min_;
return 0;
}
马蜂丑勿喷