#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<map>
using namespace std;
#define MAXN 1000+5
#define INF 0x3f3f3f3f
const int d[]={1,-1,4,-4};
string s;
map<string,int>vis;
void bfs()
{
	queue<string>Q;
	Q.push(s);
	while(!Q.empty())
	{
		string tmp=Q.front();
		Q.pop();
		if(tmp=="01234567")
		{
			printf("%d\n",vis[tmp]);
			return ;
		}
		int pos;
		for(int i=0;i<8;i++)
			if(tmp[i]=='0')
			{
				pos=i;
				break;
			}
		for(int i=0;i<4;i++)
		{
			int x=pos+d[i];
			if(0<=x&&x<8&&!(pos==3&&i==0)&&!(pos==4&&i==1))
			{
				string s1=tmp;
				swap(s1[pos],s1[x]);
				if(!vis[s1])
				{
					vis[s1]=vis[tmp]+1;
					Q.push(s1);
				}
			}
		}
	}
}
int main()
{
	int t;
	while(scanf("%d",&t)!=EOF)
	{
		vis.clear();
		s="";
		s+=t+'0';
		for(int i=2;i<=8;i++)
		{
			scanf("%d",&t);
			s+=t+'0';
		}
		vis[s]=0;
		bfs();
	}
}
