#include<bits/stdc++.h>
using namespace std;
struct st{
int z[9],pot;
}a,b;
bool vis[2][400000];
int dx[4]={-3,1,3,1};
int fact[10];
void init(){
fact[1]=1;
for(int i=2;i<=9;i++)fact[i]=fact[i-1]*i;
}
bool insertcode(st s){
int code=0;
for(int i=1;i<=9;i++){
int cnt=0;
for(int j=i+1;j<=9;j++)if(s.z[j]<s.z[i])cnt++;
code+=fact[10-i]*cnt;
}
return code;
}
int doublebfs(){
init();
queue<st> q,q1;
q.push(a);
q1.push(b);
int cnt=0;
while(!q.empty()&&!q1.empty()){
st now=q.front(),now1=q1.front();q.pop();q1.pop();
int nowp=now.pot,nowp1=now1.pot;
for(int i=0;i<4;i++){
st tmp;
tmp=now;
tmp.pot=nowp+dx[i];
swap(tmp.z[tmp.pot],tmp.z[nowp]);
int tmpa=insertcode(tmp);
if(vis[1][tmpa])return cnt+1;
vis[0][tmpa]=1;
}
cnt++;
for(int i=0;i<4;i++){
st tmp;
tmp=now1;
tmp.pot=nowp1+dx[i];
swap(tmp.z[tmp.pot],tmp.z[nowp]);
int tmpa=insertcode(tmp);
if(vis[0][tmpa])return cnt+1;
vis[1][tmpa]=1;
}
cnt++;
}
}
int main(){
int n,m=123804765;
cin>>n;
for(int i=9;i>0;i--){
a.z[i]=n%10;
if(a.z[i]==0)a.pot=i;
n/=10;
b.z[i]=m%10;
m/=10;
}
b.pot=5;
cout<<doublebfs();
return 0;
}