#include<bits/stdc++.h>
using namespace std;
string l="123804765",f,shi[1000001];
int step=0,wf[1000001]={0},i=0,j=0,fa[1000001]={-1,0},c1=1,c2=0;
int fpt(int min)
{
f=shi[i];
if(wf[i]-3>=0 && wf[i]-3!=fa[i])
{
c2++;
j++;
if(j>1001)
j=1;
fa[j]=wf[i];
swap(f[wf[i]],f[wf[i]-3]);
shi[j]=f;
wf[j]=f.find('0');
if(f.compare(l)==0)
return 0;
}
f=shi[i];
if(wf[i]-1>=0 && wf[i]-1!=fa[i])
{
c2++;
j++;
if(j>1001)
j=1;
fa[j]=wf[i];
swap(f[wf[i]],f[wf[i]-1]);
shi[j]=f;
wf[j]=f.find('0');
if(f.compare(l)==0)
return 0;
}
f=shi[i];
if(wf[i]+1<=8 && wf[i]+1!=fa[i])
{
c2++;
j++;
if(j>1001)
j=1;
fa[j]=wf[i];
swap(f[wf[i]],f[wf[i]+1]);
shi[j]=f;
wf[j]=f.find('0');
if(f.compare(l)==0)
return 0;
}
f=shi[i];
if(wf[i]+3<=8 && wf[i]+3!=fa[i])
{
c2++;
j++;
if(j>1001)
j=1;
fa[j]=wf[i];
swap(f[wf[i]],f[wf[i]+3]);
shi[j]=f;
wf[j]=f.find('0');
if(f.compare(l)==0)
return 0;
}
c1--;
if(c1==0)
{
step++;
c1=c2;
c2=0;
}
i++;
if(i>1001)
i=1;
printf("i=%d,j=%d,step=%d\n",i,j,step);
fpt(step);
}
int main()
{
getline(cin,f);
shi[0]=f;
wf[0]=f.find('0');
fpt(step);
if(c1!=0)
step++;
printf("%d",step);
return 0;
}