#include<iostream>
#include<stdio.h>
#include<string.h>
#include<string>
#include<queue>
#include<map>
using namespace std;
int dir[]={-4,4,-1,1};//上下左右 
map<string,int> table;
void bfs(string st)
{
	queue<string> q;
	table[st]=1;q.push(st); //起始状? 
	while(!q.empty())
	{
		st=q.front();q.pop();
		int num=st.find('0');//找到空格位置 
		for(int i=0;i<4;++i)
		{	
			int tn=num+dir[i];//可能??的数?
			if(tn<0||tn>7||num==3&&dir[i]==1||num==4&&dir[i]==-1)
			//空格在3的?候，4不能??，因?3 4 不相?，反之同理 
			{
				continue;
			}
			string tp=st;
			//cout<<"tp = "<<tp<<endl;
			swap(tp[num],tp[num+dir[i]]);//移?物? 
			if(!table[tp])//未出??的状? 
			{
				q.push(tp);
				table[tp]=table[st]+1; 
			}
		}
	}
}
int main()
{
	int num;
	string st="01234567";//起始状? 
	bfs(st);//逆向搜索 
	//freopen("shuju.txt","r",stdin);
	while(~scanf("%d",&num))
	{
		st[0]=num+'0';
		for(int i=1;i<8;++i)
		{
			scanf("%d",&num);
			st[i]=num+'0';
		}
		printf("%d\n",table[st]-1);//从1?始?号的 
	}
	return 0;
}