#include<bits/stdc++.h>
using namespace std;
const int b[]={1,2,3,8,0,4,7,6,5};
const int dx[]={-1,1,0,0};
bool ok;
int a[9];
char s[10];
bool check(){
for(int i=0;i<9;i++) if(a[i]!=b[i]) return 0;
return 1;
}
void dfs(int lim){
if(check()){
ok=1;
return;
}
if(lim==0) return;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if(a[i*3+j]==0){
for(int t=0;t<4;t++){
int x=i+dx[t],y=j+dx[3-t];
if(0<=x&&x<3&&0<=y&&y<3){
swap(a[i*3+j],a[x*3+y]);
dfs(lim-1);
swap(a[i*3+j],a[x*3+y]);
}
}
}
}
int main(){
scanf("%s",s);
for(int i=0;i<9;i++) a[i]=s[i]-'0';
for(int lim=0;;lim++){
dfs(lim);
if(ok){
printf("%d\n",lim);
return 0;
}
}
}