#include <iostream>
using namespace std;
//抄博友程序
char a[10][10];
int da[10][10];
int dx[5]={0,0,1,-1,0};
int dy[5]={1,-1,0,0,0};
void flip(int x,int y)
{
for(int i=0;i<5;i++)
{
int tx=x+dx[i];
int ty=y+dy[i];
if(tx>=0 && tx<4 && ty>=0 && ty<4)
{
da[tx][ty]=(da[tx][ty]+1)%2;
}
}
}
bool check()
{
int t=da[0][0];
int flag=0;
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(da[i][j]!=t)
{
flag=1;
}
}
}
if(flag==0)
{
return true;
}else
{
return false;
}
}
int jg=-1;
int js=0;
void dfs(int x,int y)
{
if(check())
{
if(jg==-1 || jg>js)
{
jg=js;
}
return;
}
if(x==4)
{
return;
}
js++;
flip(x,y);
if(y<3)
{
dfs(x,y+1);
}else
{
dfs(x+1,0);
}
flip(x,y);
js--;
if(y<3)
{
dfs(x,y+1);
}else
{
dfs(x+1,0);
}
}
int main()
{
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
cin>>a[i][j];
if(a[i][j]=='w')
{
da[i][j]=0;
}else
{
da[i][j]=1;
}
}
}
dfs(0,0);
if(jg==-1)
{
cout<<"Impossible"<<endl;
}else
{
cout<<jg<<endl;
}
return 0;
}