#include<stdio.h>
#include<iostream>
#include<string>
#include<queue>
using namespace std;
int f[4][2]={1,0,0,1,-1,0,0,-1};
char map[3][3];
int stx,sty;
string ans;
struct Node
{
int value;
int ss[10];
bool operator <(Node t1,Node t2)
{
if(t1.value<t2.value)return false;
return true;
}
};
priority_queue<Node>q;
void Dfs(int step,int sum)
{
while(!q.empty)
{
Node t=q.top();
q.pop();
}
for(int i=0;i<n;i++)
if(t.ss[0]!=i)sum++;
if(sum==0)return ;
for()
}
bool Judge()
{
int ans=0;
for(int i=1;i<9;i++)
{
for(int j=0;j<i;j++)
{
if(map[i]<map[j])ans++;
}
}
if(ans&1)return true;
return false;
}
int main()
{
int i,j;
char s[10];
while(cin.get(s,15))
{
//printf("%s\n",s);
int k=0,ki=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
map[i][j]=s[2*k];
k++;
if(map[i][j]=='x')
{
stx=i;
sty=j;
}
else ss[ki++]=map[i][j];
}
if(Judge())printf("unsolvable\n");
else
{
Dfs();
printf("%s\n",ans);
}
/*for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%c ",map[i][j]);
printf("\n");
}*/
}
return 0;
}