????
#include<bits/stdc++.h>
using namespace std;
int ans,num[4][4];
int n,m,x,y,z,X,Y;
int dx[4]={0,1,-1,0};
int dy[4]={1,0,0,-1};
int fx[11]={0,1,1,1,2,3,3,3,2};
int fy[11]={0,1,2,3,3,3,2,1,1};
int H(){
int bns=0;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
if(num[i][j])
bns+=abs(i-fx[num[i][j]])+abs(j-fy[num[i][j]]);
return bns;
}
void dfs(int k,int X,int Y,int g){
int h=H();
if(!h){
ans=g;
return ;
}
if(h+g>k||ans||g==k) return ;
for(int i=0;i<4;i++){
int x=dx[i]+X;
int y=dy[i]+Y;
if(x>=1&&y>=1&&x<=3&&y<=3){
swap(num[X][Y],num[x][y]);
dfs(k,x,y,g+1);
swap(num[x][y],num[X][Y]);
}
}
}
int main(){
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++){
char x;
cin>>x;
num[i][j]=x-'0';
if(!num[i][j])
X=i,Y=j;
}
for(int k=0;;k++){
dfs(k,X,Y,0);
if(ans){
cout<<ans<<endl;
return 0;
}
}
}