#include <bits/stdc++.h>
using namespace std;

int cur[8][3]={1,4,-1,0,2,5,1,3,6,2,7,-1,0,5,-1,4,6,1,5,2,7,3,6,-1};
struct A{
    int id,a[8];
    A(int i=0):id(i){}
    A(const A &m){
        id=m.id;
        memcpy(a,m.a,sizeof a);
    }
    bool operator < (const A &m)const{
        for(int i=0;i<8;i++){
            if(a[i] < m.a[i]) return 1;
            else if(a[i] > m.a[i]) return 0;
        }
        return 0;
    }
    bool operator == (const A &m)const{
        for(int i=0;i<8;i++)
            if(a[i]!=m.a[i]) return 0;
        return 1;
    }
};
map<A,int> m;
A a(0),ans(0);

int bfs()
{
    m.clear();
    m[ans]=0;
    queue<A> q;
    q.push(ans);
    while(!q.empty()){
        A t(q.front());
        q.pop();
        //if(t==ans) return m[t];
        for(int i=0;i<3;i++){
            A x(t);
            if(cur[x.id][i]!=-1) {swap(x.a[x.id],x.a[cur[x.id][i]]);x.id=cur[x.id][i]; }
            if(!m.count(x)){
                m[x] = m[t]+1;
                q.push(x);
            }
        }
    }
    return -1;
}
int main()
{
    //freopen("input.txt","r",stdin);
    ios::sync_with_stdio(false);
    for(int i=0;i<8;i++) ans.a[i]=i;
    bfs();
    while(cin>>a.a[0]){
        for(int i=1;i<8;i++)
            cin>>a.a[i];
        cout<<m[a]<<endl;
    }
    return 0;
}

