#include <iostream>
#include <queue>
#define MAXSIZE 16
#define MAXSTATE 65536
#define ALLWHITE 65535
#define ALLBLACK 0
using namespace std;
int state[MAXSTATE];
queue<int> Q;
int flip(int CurState, int pos)
{
CurState = CurState ^ (1<<pos);
if (pos >= 4) CurState = CurState ^ (1<<(pos-4));
if (pos < 12) CurState = CurState ^ (1<<(pos+4));
if (pos % 4 != 0) CurState = CurState ^ (1<<(pos-1));
if ((pos+1) % 4 != 0) CurState = CurState ^(1<<(pos+1));
return CurState;
}
void bfs_flip(int CurState)
{
memset(state,-1,MAXSTATE*sizeof(int));
state[CurState] = 0;
Q.push(CurState);
int NewState = 0;
while (!Q.empty())
{
CurState = Q.front();
Q.pop();
for (int i=0; i<MAXSIZE; ++i)
{
NewState = flip(CurState, i);
if (state[NewState] == -1)
{
if (NewState == ALLWHITE || NewState == ALLBLACK)
{
cout << state[CurState] + 1 << endl;
return;
}
state[NewState] = state[CurState] + 1;
Q.push(NewState);
}
}
}
cout << "Impossible" << endl;
return ;
}
int stateOfInput()
{
int CurState = 0;
int i = 0;
char c;
while (cin >> c)
{
if (c == 'b')
{
CurState = CurState ^ (1 << i);
}
++i;
}
return CurState;
}
int main()
{
int CurState = stateOfInput();
if (CurState == ALLWHITE || CurState == ALLBLACK)
{
cout << "0" << endl;
}
else
{
bfs_flip(CurState);
}
return 0;
}