#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<int> v);
void print_array(int* array, int start, int end);
vector<pair<int, int> > sol;
vector<int> a, b;
int solve() {
  int ans = 0;
  int n = (int)(a).size();
  vector<int> t(n, 0);
  for (int i = (0), _b = (n); i < _b; i++) {
    t[b[i]] = i;
  }
  while (true) {
    for (int i = (0), _b = (n); i < _b; i++) {
      int target = t[a[i]];
      if (i < target)
        for (int j = (i + 1), _b = (target + 1); j < _b; j++) {
          if (t[a[j]] <= i) {
            swap(a[i], a[j]), ans += abs(j - i),
                sol.push_back(pair<int, int>(i, j));
            break;
          }
        }
      else if (i > target)
        for (int j = (target), _b = (i); j < _b; j++) {
          if (t[a[j]] >= i) {
            swap(a[i], a[j]), ans += abs(j - i),
                sol.push_back(pair<int, int>(i, j));
            break;
          }
        }
    }
    if (a == b) break;
  }
  return ans;
}
int main() {
  ios::sync_with_stdio(false);
  int n, x;
  cin >> n;
  for (int i = (0), _b = (n); i < _b; i++) cin >> x, x--, a.push_back(x);
  for (int i = (0), _b = (n); i < _b; i++) cin >> x, x--, b.push_back(x);
  cout << solve() << endl;
  cout << (int)(sol).size() << endl;
  for (int i = (0), _b = ((int)(sol).size()); i < _b; i++) {
    cout << sol[i].first + 1 << " " << sol[i].second + 1 << "\n";
  }
  return 0;
}
void print_array(int* array, int start, int end) {
  printf("[");
  for (int i = (start), _b = (end); i < _b; i++) {
    printf("%d ", array[i]);
  }
  printf("]");
  printf("\n");
}
void print_vector(vector<int> v) {
  printf("[");
  for (int i = (0), _b = (v.size()); i < _b; i++) {
    printf("%d ", v[i]);
  }
  printf("]");
  printf("\n");
}
