#include#include #define maxn 1000000struct node{ int q[10]; int fa; int step;}s[maxn];int data[]={ 1,2,3,8,0,4,7,6,5};int h[]={ 1,1,2,6,24,120,720,5040,40320};const int dx[]={-1,1,0,0};const int dy[]={ 0,0,-1,1};int vis[10000000];int gethash(int t){ int sum=0; for(int i=0;i<9;i++) { int num=0; for(int j=i+1;j<9;j++) { if(s[t].q[j] =0&&nx<3&&ny>=0&&ny<3) { memcpy(s[rear].q,s[front].q,sizeof(s[front].q)); int t=s[rear].q[nz]; s[rear].q[nz]=0; s[rear].q[z]=t; s[rear].step=s[front].step+1; if (gethash(rear)) rear++; } } front++; } return 0;}int main(){ for(int i=0;i<9;i++) scanf("%01d",&s[1].q[i]); s[1].fa=0; s[1].step=0; int p=bfs(); printf("%d\n",s[p].step); return 0;}