#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;
 
struct state{
    int p[8];
    int t;
};
 
int main()
{
    while(true){
        struct state s;
 
        cin >> s.p[0];
 
        if(cin.eof())               // ?????????????????????????????°
            break;
 
        for(int i=1; i<8; i++){
            cin >> s.p[i];
        }
 
        s.t = 0;
 
        if(s.p[0]==0 && s.p[1]==1 && s.p[2]==2 && s.p[3]==3 && s.p[4]==4 && s.p[5]==5 && s.p[6]==6 && s.p[7]==7){
            cout << s.t << endl;
            continue;
        }
 
        bool memo[8][8][8][8][8][8][8];     // ?????¢???????´??????????7?¬????
        for(int i0=0; i0<8; i0++){
        for(int i1=0; i1<8; i1++){
        for(int i2=0; i2<8; i2++){
        for(int i3=0; i3<8; i3++){
        for(int i4=0; i4<8; i4++){
        for(int i5=0; i5<8; i5++){
        for(int i6=0; i6<8; i6++){
            memo[i0][i1][i2][i3][i4][i5][i6] = false;
        }
        }
        }
        }
        }
        }
        }
        memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]] = true;
 
        queue<struct state> q;
        q.push(s);
 
        while(true){
            if(q.empty())
                break;
 
            s = q.front();
            q.pop();
 
            s.t++;
 
            int I = 0;
            while(s.p[I]!=0){           // 0??????????????¢???
                I++;
            }
 
            if(0<=I && I<=3){         // ???????????°
                swap(s.p[I], s.p[I+4]);
                if(s.p[0]==0 && s.p[1]==1 && s.p[2]==2 && s.p[3]==3 && s.p[4]==4 && s.p[5]==5 && s.p[6]==6 && s.p[7]==7){
                    cout << s.t << endl;
                    break;
                }
                if(!memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]]){
                    memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]] = true;
                    q.push(s);
                }
                swap(s.p[I], s.p[I+4]);
            }
 
            if(4<=I && I<=7){         // ???????????°
                swap(s.p[I], s.p[I-4]);
                if(s.p[0]==0 && s.p[1]==1 && s.p[2]==2 && s.p[3]==3 && s.p[4]==4 && s.p[5]==5 && s.p[6]==6 && s.p[7]==7){
                    cout << s.t << endl;
                    break;
                }
                if(!memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]]){
                    memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]] = true;
                    q.push(s);
                }
                swap(s.p[I], s.p[I-4]);
            }
 
            if(I!=0 && I!=4){           // ????????§???????????°
                swap(s.p[I], s.p[I-1]);
                if(s.p[0]==0 && s.p[1]==1 && s.p[2]==2 && s.p[3]==3 && s.p[4]==4 && s.p[5]==5 && s.p[6]==6 && s.p[7]==7){
                    cout << s.t << endl;
                    break;
                }
                if(!memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]]){
                    memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]] = true;
                    q.push(s);
                }
                swap(s.p[I], s.p[I-1]);
            }
 
            if(I!=3 && I!=7){           // ????????§???????????°
                swap(s.p[I], s.p[I+1]);
                if(s.p[0]==0 && s.p[1]==1 && s.p[2]==2 && s.p[3]==3 && s.p[4]==4 && s.p[5]==5 && s.p[6]==6 && s.p[7]==7){
                    cout << s.t << endl;
                    break;
                }
                if(!memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]]){
                    memo[s.p[0]][s.p[1]][s.p[2]][s.p[3]][s.p[4]][s.p[5]][s.p[6]] = true;
                    q.push(s);
                }
                swap(s.p[I], s.p[I+1]);
            }
        }
    }
 
    return 0;
}