#include <bits/stdc++.h>
using namespace std;
template <typename T>
void __read(T &a) {
  cin >> a;
}
template <typename T, typename... Args>
void __read(T &a, Args &...args) {
  cin >> a;
  __read(args...);
}
constexpr long long M7 = 1000000007ll;
constexpr long long M9 = 1000000009ll;
constexpr long long MFFT = 998244353ll;
template <class T>
void outv(T &a) {
  for (auto &x : a) cout << x << ' ';
}
static mt19937 rnd(static_cast<unsigned>(
    chrono::steady_clock::now().time_since_epoch().count()));
auto __fast_io__ = (ios_base::sync_with_stdio(false), cin.tie(nullptr));
int32_t main() {
  long long n;
  __read(n);
  vector<pair<long long, long long>> e(n);
  for (auto &[v, u] : e) {
    cin >> v >> u;
  }
  for (long long b = 20; b >= 0; --b) {
    long long mask = (1 << b) - 1;
    vector<vector<long long>> g(mask + 1);
    if (b == 3) {
      long long asdasd = 0;
    }
    for (long long i = 0; i < e.size(); ++i) {
      auto &[v, u] = e[i];
      v &= mask, u &= mask;
      g[v].push_back(i);
      g[u].push_back(i);
    }
    bool ok = true;
    long long sv = 0;
    for (long long i = 0; ok && i < g.size(); ++i) {
      ok = g[i].size() % 2 == 0;
      if (g[i].size() > 0) {
        sv = i;
      }
    }
    if (!ok) {
      continue;
    }
    stack<pair<long long, long long>> st;
    st.emplace(sv, -1);
    vector<long long> ans, ind(g.size()), was(n);
    while (!st.empty()) {
      auto [v, i] = st.top();
      while (ind[v] < g[v].size() && was[g[v][ind[v]]]) {
        ind[v]++;
      }
      if (ind[v] == g[v].size()) {
        if (i != -1) {
          long long j = 2 * i ^ (e[i].first != v);
          ans.push_back(j);
          ans.push_back(j ^ 1);
        }
        st.pop();
      } else {
        long long ei = g[v][ind[v]];
        was[ei] = 1;
        long long u = e[ei].first;
        if (u == v) {
          u = e[ei].second;
        }
        st.emplace(u, ei);
      }
    }
    if (ans.size() == 2 * n) {
      cout << b << '\n';
      for (auto &v : ans) {
        cout << v + 1 << ' ';
      }
      return 0;
    }
  }
  return 0;
}
