//反向搜索（类比于反向建图） 
#include<iostream>
#include<algorithm>
#include<map>
#include<queue>
using namespace std;
map<string,int> dp;
int next[4]={-1,1,-4,4};
//左，右，上，下移动 

void bfs()
{
	queue<string> q;
	q.push("01234567");
	dp["01234567"]=0;
	//dp兼有标记作用 
	while(q.size())
	{
		string s=q.front();
		q.pop();
		string::size_type x=s.find('0');
		//find函数查找指定元素的下标 
		for(int i=0;i<4;i++)
		{
			int tx=x+next[i];
			//右上角不能右移，左下角不能左移 
			if(0<=tx&&tx<8&&!(x==3&&i==1)&&!(x==4&&i==0))
			{
				string ts=s;
				swap(ts[x],ts[tx]);
				//若dp中无该字符串，则未访问过
				//可访问之 
				if(dp.find(ts)==dp.end())
				{
					dp[ts]=dp[s]+1;
					q.push(ts);
				}	
			}
		}
	}
}

int main()
{
	bfs();
	string s;
	while(getline(cin,s))
	{
		s.erase(remove(s.begin(),s.end(),' '),s.end());
		//删除字符串中的空格(依赖于头文件algorithm) 
		cout<<dp[s]<<endl;
	}
	return 0;
}
