#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int M=16;
int n,ans;
int g[M][M],k[M][M];
void Init(){
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
k[i][j]=g[i][j];
}
int Solve(int a){
int cal=1<<n;
int cnt,sum=0x3f3f3f3f;
for(int h=0;h<cal;h++){
Init();
cnt=0;
bool flag=true;
for(int i=0;i<n;i++)
{
if(h&(1<<i)) continue;
cnt++;
k[0][i]=1-k[0][i],k[1][i]=1-k[1][i];
if(i>0) k[0][i-1]=1-k[0][i-1];
if(i<n-1) k[0][i+1]=1-k[0][i+1];
}
for(int i=1;i<n;i++)
for(int j=0;j<n;j++)
if(k[i-1][j]!=a){
cnt++;
k[i][j]=1-k[i][j];
k[i+1][j]=1-k[i+1][j];
if(j>0) k[i][j-1]=1-k[i][j-1];
if(j<n-1) k[i][j+1]=1-k[i][j+1];
}
for(int i=0;i<n;i++)
if(k[n-1][i]!=a)
flag=false;
if(flag&&cnt<sum) sum=cnt;
}
return sum;
}
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("\n");
for(int j=0;j<n;j++){
char tmp;
scanf("%c",&tmp);
if(tmp=='b') g[i][j]=1;
else g[i][j]=0;
}
}
if(n==1){
puts("0");
return 0;
}
ans=min(Solve(1),Solve(0));
if(ans==0x3f3f3f3f) printf("Impossible\n");
else printf("%d\n",ans);
return 0;
}