#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <typename T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
const int MAX_N = 20;
int main() {
  int N;
  cin >> N;
  vector<pair<int, int>> A, B, C, D;
  for (int i = 0; i < N; i++) {
    int a;
    cin >> a;
    A.emplace_back(a, i);
  }
  for (int i = 0; i < N; i++) {
    int a;
    cin >> a;
    B.emplace_back(a, i);
  }
  for (int i = 0; i < N; i++)
    if (i & 1) swap(A[i], B[i]);
  vector<bool> use(N, false);
  auto idx = [&](int k, bool f) -> int {
    int value = 1e9, id = -1;
    if (!f) {
      for (int i = k; i < N; i++) {
        if (i & 1) {
          if (!use[i])
            if (chmin(value, B[i].first)) id = i;
        } else {
          if (!use[i])
            if (chmin(value, A[i].first)) id = i;
        }
      }
    } else {
      for (int i = k; i < N; i++) {
        if (i & 1) {
          if (!use[i])
            if (chmin(value, A[i].first)) id = i;
        } else {
          if (!use[i])
            if (chmin(value, B[i].first)) id = i;
        }
      }
    }
    return id;
  };
  int ans = 0;
  for (int i = 0; i < N; i++) {
    int id = idx(i, (i & 1));
    if (id == -1) {
      cout << -1 << endl;
      return 0;
    }
    use[id] = true;
    while (i <= id) {
      swap(A[id], B[id - 1]);
      swap(A[id - 1], B[id]);
      id--;
      ans++;
    }
  }
  cout << ans << endl;
  return 0;
}
