//http://acm.pku.edu.cn/JudgeOnline/problem?id=1753
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
char str[5][5];
bool state[65536];
int step[65536];
int q[65536];
int num[16];
int op[16][5]={{0,1,4,-1,-1},{0,1,2,5,-1},{1,2,3,6,-1},{2,3,7,-1,-1},{0,4,5,8,-1},{1,4,5,6,9},{2,5,6,7,10},{3,6,7,11,-1},{4,8,9,12,-1},{5,8,9,10,13},{6,9,10,11,14},{7,10,11,15,-1},{8,12,13,-1,-1},{9,12,13,14,-1},{10,13,14,15,-1},{11,14,15,-1,-1}};
int main()
{
int i,j;
int start=0;
int p;
for(i=0;i<4;i++)
scanf("%s",str[i]);
memset(state,0,sizeof(state));
memset(step,-1,sizeof(step));
for(i=0,p=1;i<16;i++,p<<=1)
{
start+=(str[i/4][i%4]=='w'?0:1)*p;
num[i]=p;
}
//cout<<start<<endl;
state[start]=1;
step[start]=0;
int begin=0,end=1;
q[begin]=start;
while(begin<end)
{
int now=q[begin];
if(now==0||now==65535)break;
for(i=0;i<16;i++)
{
int sum=0;
for(j=0;j<5;j++)
{
if(op[i][j]!=-1)
{
int temp=op[i][j];
temp=num[temp];
if((temp|now)==now)sum-=temp;
else sum+=temp;
}
}
if(!state[now+sum])
{
state[now+sum]=1;
q[end++]=now+sum;
step[now+sum]=step[now]+1;
}
}
begin++;
}
int min=step[0];
if(min==-1||min<step[65535])min=step[65535];
if(min!=-1)printf("%d/n",min);
else printf("Impossible/n");
return 0;
}