#include <stdio.h>
#include <queue>
#include <map>
#include <string>
#include <stdlib.h>
#define SWAP(a, b) a^=b; b^=a; a^=b;
using namespace std;
void shiftBlock(string s, int a, int b);
queue<int> q;
map<string, int> m;
int main() {
//int resultState[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int start = 0;
for(int i=100000000; i>=1; i/=10){
int x;
scanf("%d ", &x);
if(x==0) x=9;
start += i*x;
}
q.push(start);
m[to_string(start)] = 0;
while(!q.empty()){
string now = to_string(q.front());
q.pop();
for(int i=0; i<9; i++){
if(now[i] != '9') continue;
switch(i){
case 0:
shiftBlock(now, i, i+1);
shiftBlock(now, i, i+3);
break;
case 1:
shiftBlock(now, i, i-1);
shiftBlock(now, i, i+3);
shiftBlock(now, i, i+1);
break;
case 2:
shiftBlock(now, i, i-1);
shiftBlock(now, i, i+3);
case 3:
shiftBlock(now, i, i+3);
shiftBlock(now, i, i+1);
shiftBlock(now, i, i-3);
case 4:
shiftBlock(now, i, i+1);
shiftBlock(now, i, i-1);
shiftBlock(now, i, i+3);
shiftBlock(now, i, i-3);
case 5:
shiftBlock(now, i, i-1);
shiftBlock(now, i, i+3);
shiftBlock(now, i, i-3);
case 6:
shiftBlock(now, i, i-3);
shiftBlock(now, i, i+1);
case 7:
shiftBlock(now, i, i+1);
shiftBlock(now, i, i-1);
shiftBlock(now, i, i-3);
case 8:
shiftBlock(now, i, i-1);
shiftBlock(now, i, i-3);
}
}
}
printf("%d", m["123456789"]);
return 0;
}
void shiftBlock(string s, int a, int b){
string temp = s;
SWAP(temp[a], temp[b]);
q.push( atoi(temp.c_str()));
m[temp] = m[s] + 1;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojZGVmaW5lIFNXQVAoYSwgYikgYV49YjsgYl49YTsgYV49YjsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgc2hpZnRCbG9jayhzdHJpbmcgcywgaW50IGEsIGludCBiKTsKcXVldWU8aW50PiBxOwptYXA8c3RyaW5nLCBpbnQ+IG07CgppbnQgbWFpbigpIHsKCS8vaW50IHJlc3VsdFN0YXRlW10gPSB7IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDB9OwoJaW50IHN0YXJ0ID0gMDsKCglmb3IoaW50IGk9MTAwMDAwMDAwOyBpPj0xOyBpLz0xMCl7CgkJaW50IHg7CgkJc2NhbmYoIiVkICIsICZ4KTsKCQlpZih4PT0wKSB4PTk7CgkJc3RhcnQgKz0gaSp4OwoJfQoJCglxLnB1c2goc3RhcnQpOwoJbVt0b19zdHJpbmcoc3RhcnQpXSA9IDA7CgkKCXdoaWxlKCFxLmVtcHR5KCkpewoJCXN0cmluZyBub3cgPSB0b19zdHJpbmcocS5mcm9udCgpKTsKCQlxLnBvcCgpOwoJCQoJCWZvcihpbnQgaT0wOyBpPDk7IGkrKyl7CgkJCWlmKG5vd1tpXSAhPSAnOScpIGNvbnRpbnVlOwoJCQkKCQkJc3dpdGNoKGkpewoJCQkJY2FzZSAwOgoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpKzEpOwoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpKzMpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAxOgoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpLTEpOwoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpKzMpOwoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpKzEpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAyOgoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpLTEpOwoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpKzMpOwoJCQkJY2FzZSAzOgoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpKzMpOwoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpKzEpOwoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpLTMpOwoJCQkJY2FzZSA0OgoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpKzEpOwoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpLTEpOwoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpKzMpOwoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpLTMpOwoJCQkJY2FzZSA1OgoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpLTEpOwoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpKzMpOwoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpLTMpOwoJCQkJY2FzZSA2OgoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpLTMpOwoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpKzEpOwoJCQkJY2FzZSA3OgoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpKzEpOwoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpLTEpOwoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpLTMpOwoJCQkJY2FzZSA4OgoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpLTEpOwoJCQkJCXNoaWZ0QmxvY2sobm93LCBpLCBpLTMpOwoJCQl9CgkJfQoJCQoJfQoJcHJpbnRmKCIlZCIsIG1bIjEyMzQ1Njc4OSJdKTsKCXJldHVybiAwOwp9Cgp2b2lkIHNoaWZ0QmxvY2soc3RyaW5nIHMsIGludCBhLCBpbnQgYil7CglzdHJpbmcgdGVtcCA9IHM7CglTV0FQKHRlbXBbYV0sIHRlbXBbYl0pOwoJcS5wdXNoKCBhdG9pKHRlbXAuY19zdHIoKSkpOwoJbVt0ZW1wXSA9IG1bc10gKyAxOwp9Cg==