#include<bits/stdc++.h>
using namespace std;
int s[5][5],e[5][5],c[5][5],d[5][5];
int sum,spa1,spa2;
int h,t,q[400000][2],n;
int ha[1000007];
const int xi=1000007;
const int dx[5]={0,0,1,-1};
int dy[5]={1,-1,0,0};
bool haxi(int s)
{
int wei=s%xi;
if(!ha[wei])
{
ha[wei]=s;
return 1;
}
while(ha[wei]!=0&&ha[wei]!=s)
{
wei++;
}
if(ha[wei]==s)
{
return 0;
}
else
{
ha[wei]=s;
return 1;
}
}
int dg1(int a[5][5])
{
int ans=0;
for(int i=1;i<4;i++)
{
for(int j=1;j<4;j++)
{
ans=ans*10+a[i][j];
}
}
return ans;
}
void dg2(int k)
{
for(int i=3;i>0;i--)
{
for(int j=3;j>0;j--)
{
c[i][j]=k%10;
if(k%10==0)
{
spa1=i;
spa2=j;
}
k/=10;
}
}
}
int main()
{
cin>>n;
sum=123804765;
if(n==sum)
{
cout<<0;
return 0;
}
h=0,t=1;
q[t][1]=n;
q[t][2]=0;
ha[q[t][1]%xi]=q[t][1];
while(h<t)
{
h++;
int x=q[h][1];
dg2(x);
for(int i=0;i<4;i++)
{
int xx=spa1+dx[i],yy=spa2+dy[i];
for(int j=1;j<4;j++)
{
for(int k=1;k<4;k++)
{
d[j][k]=c[j][k];
}
}
if(xx>0&&xx<4&&yy>0&&yy<4)
{
swap(d[xx][yy],d[spa1][spa2]);
int sum1=dg1(d);
if(haxi(sum1))
{
t++;
q[t][1]=sum1;
q[t][2]=q[h][2]+1;
if(sum1==sum)
{
cout<<q[t][2];
return 0;
}
}
}
}
}
cout<<-1;
return 0;
}