#include <bits/stdc++.h>

using namespace std;

// 上下左右の移動のため
vector<int> dx = { -4, 4, -1, 1 };

map<string, int> cache;

// ゴールから移動可能な文字列すべてへの移動距離を計算してキャッシュする
void create_cache() {
  queue<string> q;
  
  const string goal = "01234567";
  cache[goal] = 0;
  q.push(goal);
  
  while (q.size()) {
    string current = q.front(); q.pop();
        
    // '0' の位置
    int x = current.find('0');
          
    // 交換
    for (int i = 0; i < 4; i++) {
      int nx = x + dx[i];
      // 範囲内
      if (0 <= nx && nx < 8) {
        
        // 上段右端のときは右移動不可
        if (x == 3 && dx[i] == 1) continue;
        // 下段左端のときは左移動不可
        if (x == 4 && dx[i] == -1) continue;
        
        // 文字の入れ替え
        string next = current;          
        next.at(x) = current.at(nx);
        next.at(nx) = current.at(x);

        // 未訪問なら Queue に積む
        if (!cache.count(next)) {
          cache[next] = cache.at(current) + 1;
          q.push(next);
        }
      }
    }
  }  
}

int main() {
  create_cache();
  
  while (true) {   
    string numbers(8, '0');
    
    for (int i = 0; i < 8; i++) {
      cin >> numbers.at(i);
    }
    
    if (!cin.good()) break;
    
    cout << cache.at(numbers) << endl;
  }
}

