#include<iostream>
#include<queue>
#include<string.h>
#include<string>
#include<map>
#include<math.h>
#include<algorithm>
using namespace std;
string str;  int dx[4]={-1,1,4,-4}; 
map <string,int> mp;

int posi;
void bfs()
{
    queue <string> que;
    que.push("01234567");
     mp["01234567"]=0;
    while(que.size())
    {
    	string preq=que.front(); que.pop();
			for(int i=0;i<8;i++) if(preq[i]=='0') posi=i; 
		for(int i=0;i<4;i++)
		{
		    	int nposi=posi+dx[i];
		    	if(nposi>7||nposi<0) continue;
		    	if(i==0&&nposi==3||i==1&&nposi==4) continue;
				string q=preq;
				swap(q[posi],q[nposi]);
				if(mp.find(q)!=mp.end()) continue;
				que.push(q);
				mp[q]=mp[preq]+1;
		} 
	}
} 

int main()
{	
	bfs();
	while(true) 
	{
	   int a;
	   str="";
	   for(int i=0;i<8;i++)
	   {
	       scanf("%d",&a);
		   str+=a+'0';	
	   } 
	   printf("%d\n",mp[str]);
	}
	return 0;
}
