#include<iostream>
#include<map>
using namespace std;
typedef struct
{
int x;
int w;
char s;
}aaa;
map<int,int>a;
aaa dui[1000000],du[1000000];//两个队列
char www[1000000];
int main()
{
int i,j;
int many,ji,ji1,zan,zan2,x,y,tt,ww,ta,wa,q;
int fang1[4][2]={-1,0,0,-1,1,0,0,1};//方向数组
int fang2[4][2]={0,-1,-1,0,0,1,1,0};//方向数组
int jin[9]={100000000,10000000,1000000,100000,10000,1000,100,10,1};
char w[3][3];
while(cin>>w[0][0])
{
cin>>w[0][1]>>w[0][2];
for(i=1;i<3;i++)
for(j=0;j<3;j++)
cin>>w[i][j];
many=0;
char w2[9];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
w2[many++]=w[i][j];
many=0;
for(i=0;i<9;i++)
for(j=0;j<i;j++)
if((w2[i]<w2[j])&&w2[i]!='x'&&w2[j]!='x')
many+=1;
if(many%2==1)
{
printf("unsolvable\n");
return(0);
}
int e,s;
s=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(w[i][j]!='x')s=10*s+w[i][j]-'0';
else s=10*s+9;
}
tt=ww=ta=wa=1;
e=123456789;
dui[ww].w=s;
du[wa].w=e;
a[s]=1;
a[e]=2;
bool neng=false;
if(s==e)neng=true;
while(!neng)
{
ji=0;
ji1=0;
for(i=0;i<9;i++)
if((dui[tt].w/jin[i])%10==9)
{
ji=i;
break;
}
for(i=0;i<9;i++)
if((du[ta].w/jin[i])%10==9)
{
ji1=i;
break;
}
for(i=0;i<4;i++)
{
x=ji/3;
y=ji%3;
if(x+fang1[i][0]<3&&x+fang1[i][0]>=0&&y+fang1[i][1]<3&&y+fang1[i][1]>=0&&neng==false)
{
s=dui[tt].w;
zan=s/jin[ji];
zan2=s/jin[(x+fang1[i][0])*3+(y+fang1[i][1])];
zan=zan%10;
zan2=zan2%10;
s=s-zan*jin[ji]-zan2*jin[(x+fang1[i][0])*3+(y+fang1[i][1])];
s=s+zan2*jin[ji]+zan*jin[(x+fang1[i][0])*3+(y+fang1[i][1])];
if(a[s]!=1)
{
if(a[s]==2)neng=true;
a[s]=1;
ww+=1;
dui[ww].w=s;
dui[ww].x=tt;
if(i==0)dui[ww].s='u';
if(i==1)dui[ww].s='l';
if(i==2)dui[ww].s='d';
if(i==3)dui[ww].s='r';
}
}
x=ji1/3;
y=ji1%3;
if(x+fang2[i][0]<3&&x+fang2[i][0]>=0&&y+fang2[i][1]<3&&y+fang2[i][1]>=0&&neng==false)
{
s=du[ta].w;
zan=s/jin[ji1];
zan2=s/jin[(x+fang2[i][0])*3+(y+fang2[i][1])];
zan=zan%10;
zan2=zan2%10;
s=s-zan*jin[ji1]-zan2*jin[(x+fang2[i][0])*3+(y+fang2[i][1])];
s=s+zan2*jin[ji1]+zan*jin[(x+fang2[i][0])*3+(y+fang2[i][1])];
if(a[s]==0)
{
a[s]=2;
wa+=1;
du[wa].w=s;
du[wa].x=ta;
if(i==0)du[wa].s='r';
if(i==1)du[wa].s='d';
if(i==2)du[wa].s='l';
if(i==3)du[wa].s='u';
}
}
}
ta+=1;
tt+=1;
}
ji=0;
q=ww;
while(q!=1)
{
ji+=1;
www[ji]=dui[q].s;
q=dui[q].x;
}
for(i=ji;i>=1;i--)printf("%c",www[i]);
ji=0;
q=1;
while(du[q].w!=dui[ww].w)q++;
while(q!=1)
{
ji+=1;
www[ji]=du[q].s;
q=du[q].x;
}
for(i=1;i<=ji;i++)printf("%c",www[i]);
printf("\n");
while(!a.empty())a.erase(a.begin());
}
return(0);
}