
#include <iostream>
#include <vector>
#include <cstdio>
#include <map>
#include <queue>
#include <string>
using namespace std;

vector<int> cm[8];

typedef pair<string, int> P;

map<string ,int> m;

inline void SCM(int i,int v)
{
	cm[i].push_back(v);
	cm[v].push_back(i);
}

void Initcm()
{
	SCM(0,1);
	SCM(1,2);
	SCM(2,3);
	SCM(4,5);
	SCM(5,6);
	SCM(6,7);
	SCM(0,4);
	SCM(1,5);
	SCM(2,6);
	SCM(3,7);
}

void bfs()
{
	queue<P> q;
	q.push(P("01234567",1));//if()でその値があるかどうかSerchしやすくするために+1そのため結果は-1
	while(!q.empty()){
		P p = q.front();q.pop();
		if(m[p.first])
			continue;//値が存在するとき
		m[p.first] = p.second;
		int cnum;
		for(int i=0;i<8;++i){
			if(p.first[i] == '0'){
				cnum = i;
				break;
			}
		}
		for(int i=0;i<cm[cnum].size();++i){
			string str = p.first;
			char c = str[cnum];
			str[cnum] = str[cm[cnum].at(i)];
			str[cm[cnum].at(i)] = c;
			q.push(P(str,p.second+1));
		}
	}
}

int main(void)
{
	Initcm();
	bfs();
	while(1){
		string a;
		string sum;
		for(int i=0;i<8;++i){
			cin >> a;
			sum += a;
		}
		cout << m[sum] - 1 << endl;
	}
	return 0;
}