#include <iostream>
#include <vector>
#include <map>
#include <queue>

#define pii pair<int, int>
#define vi vector<int>
#define vvi vector<vi>

using namespace std;

map<vector<int>, int> dp;

// ??¶??????????????¨????????????????§?????????¶????????????????????????
vvi next(vi pre)
{
    vvi res;  

    int zero = pre[0];
    
    // zero ????????????????????????????????°????????\?????????????????????res???push??????
    // 0??¨?????£?????\?????????
    if (zero != 1 && zero != 5) {
        vi tmp = pre;
        swap(tmp[zero], tmp[zero - 1]);
        tmp[0] = zero - 1;
        res.push_back(tmp);
    }
        
    // 0??¨?????£?????\?????????
    if (zero != 4 && zero != 8) {
        vi tmp = pre;
        swap(tmp[zero], tmp[zero + 1]);
        tmp[0] = zero + 1;
        res.push_back(tmp);
    }

    // 0??¨?????£?????\?????????
    if (zero > 4) {
        vi tmp = pre;
        swap(tmp[zero - 4], tmp[zero]);
        tmp[0] = zero - 4;
        res.push_back(tmp);
    }  
    // 0 ??¨?????£?????\?????????
    else {
        vi tmp = pre;
        swap(tmp[zero], tmp[zero + 4]);
        tmp[0] = zero + 4;
        res.push_back(tmp);
    }

    return res;
}
 
// ??????????????????
void init()
{
   vi s = {1, 0, 1, 2, 3, 4, 5, 6, 7}; 
   queue<vi> q;
   dp.clear();
   dp[s] = 0;
   q.push(s);

   while (!q.empty()) {
        vi tmp = q.front(); q.pop();
        vvi n = next(tmp);
        
        for (int i = 0; i < n.size(); ++i) {
            // ???????????????????????????????????????????¢????
            // ???????????°??????
            if (dp.count(n[i]) == 0) {
                dp[n[i]] = dp[tmp] + 1;
                q.push(n[i]);
            }
        }
    }
}


int main()
{
    init();

    vi in(9);

    // ????????¨?????????????????????
    while (true) {
        for (int i = 1; i < 9; ++i) {
            if (cin >> in[i]) {}
            else break;
        }

        for (int i = 0;  i < in.size(); ++i) {
            if (in[i] == 0) {
                in[0] = i;
            }
        }

        cout << dp[in] << endl;

        in.clear();
        in.resize(9);
    }

    
    return 0;
}