#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <complex>
#include <string>
#include <sstream>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <functional>
#include <iostream>
#include <map>
#include <set>
using namespace std;
typedef pair<int,int> P;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
#define pu push
#define pb push_back
#define mp make_pair
#define eps 1e-9
#define INF 2000000000
#define sz(x) ((int)(x).size())
#define fi first
#define sec second
#define SORT(x) sort((x).begin(),(x).end())
#define all(x) (x).begin(),(x).end()
#define EQ(a,b) (abs((a)-(b))<EPS)
int encode(vector<int> v)
{
	int ret=0;
	int B=1;
	for(int i=0;i<8;i++)
	{
		ret+=B*v[i];
		B*=8;
	}
	return ret;
}
vector<int> decode(int p)
{
	vector<int> v;
	for(int i=0;i<8;i++)
	{
		v.pb(p%8);
		p/=8;
	}
	return v;
}
vector<int> pos(int n)
{
	vector<int> ret;
	if(n==0)
	{
		ret.pb(1);ret.pb(4);
		return ret;
	}
	if(n==3)
	{
		ret.pb(2);ret.pb(7);
		return ret;
	}
	if(n==4)
	{
		ret.pb(0);ret.pb(5);
		return ret;
	}
	if(n==7)
	{
		ret.pb(3);ret.pb(6);
		return ret;
	}
	ret.pb(n-1);ret.pb(n+1);
	if(n==1||n==2)
	{
		ret.pb(n+4);
		return ret;
	}
	else
	{
		ret.pb(n-4);
		return ret;
	}
}
vector<int> node[16777216];
void next(int p)
{
	vector<int> vec=decode(p);
	int zero=0;
	while(vec[zero]!=0)zero++;
	vector<int> to=pos(zero);
	for(int i=0;i<to.size();i++)
	{
		vector<int> tmp=vec;
		swap(tmp[zero],tmp[to[i]]);
		node[p].pb(encode(tmp));
	}
	return;
}
bool used[16777216];
int end;
int bfs(int start)
{
	if(start==end)return 0;
	memset(used,false,sizeof(used));
	queue<P> q;
	q.push(mp(start,0));
	used[start]=true;
	while(!q.empty())
	{
		P a=q.front();
		q.pop();
		if(a.fi==end)return a.sec;
		if(used[a.fi])continue;
		for(int i=0;i<node[a.fi].size();i++)
		{
			if(!used[node[a.fi][i]])
			{
				used[node[a.fi][i]]=true;
				q.push(mp(node[a.fi][i],a.sec+1));
			}
		}
	}
	return -1;
}
int main()
{
	vector<int> e;
	for(int i=0;i<8;i++)e.pb(i);
	end=encode(e);
	for(int i=0;i<40320;i++)next(i);
	int a[8];
	while(cin >>a[0]>>a[1]>>a[2]>>a[3]>>a[4]>>a[5]>>a[6]>>a[7])
	{
		vector<int> in;
		for(int i=0;i<8;i++)in.pb(a[i]);
		int start=encode(in);
		cout << bfs(start) << endl;
	}
	return 0;
}