#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
#include<queue>
#include<map>
#include<algorithm>
using namespace std;
int bu[4]={1,-1,4,-4};
bool ture(const string &a)
{
  if(a=="01234567")
   return true;
  else 
   return false;
}
int bfs(string a)
{
  map<string,int> kod;
  typedef pair<string,int> pa;
  queue<pa> k;
  k.push(pa(a,0));
  while(k.size())
  {
    pa t=k.front();k.pop();
    string t1=t.first;
    int t2=t.second;
    if(ture(t1))
     return t2;
    int x;
    for(int i=0;i<8;i++)
     if(t1[i]=='0')
     {  x=i;break;}
    for(int i=0;i<4;i++)
    {
      int x1=x+bu[i];
      if(x1>=0&&x1<8&&!(x1==3&&x==4)&&!(x1==4&&x==3)&&kod.find(t1)==kod.end())
     {
       string co;
       co=t1;
       swap(co[x1],co[x]);
       k.push(pa(co,t2+1));
     }
    }
    kod[t1]=1;
   }
   return -1;
}
int main()
{
  string a;
  while(cin>>a)
  {
    string k;
    k=k+a;
    for(int i=0;i<7;i++)
    {
      cin>>a;
      k=k+a;
    }
    int b=bfs(k);
    printf("%d\n",b);
  }
  return 0;
}