#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  long long r;
  while (b != 0) {
    r = a % b;
    a = b;
    b = r;
  }
  return a;
}
long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
const int mod = 1000000007;
const int INF = (int)1e9;
const long long LINF = (long long)1e18;
const int maxn = 2010;
int n;
int a[maxn];
int b[maxn];
vector<pair<int, int> > res;
void solve() {
  scanf("%d", &n);
  for (int i = (0); i < (n); i++) scanf("%d", a + i);
  for (int i = (0); i < (n); i++) {
    int x;
    scanf("%d", &x);
    b[x] = i;
  }
  for (int i = (0); i < (n); i++) a[i] = b[a[i]];
  int ans = 0;
  for (int i = (0); i < (n); i++) {
    int idx;
    for (int j = (i); j < (n); j++)
      if (a[j] == i) {
        idx = j;
        break;
      }
    for (int j = (idx)-1; j >= (i); j--)
      if (a[j] >= idx) {
        swap(a[idx], a[j]);
        res.push_back(make_pair(idx, j));
        ans += idx - j;
        idx = j;
      }
  }
  printf("%d\n%d\n", ans, int((res).size()));
  for (int i = (0); i < (int((res).size())); i++)
    printf("%d %d\n", res[i].first + 1, res[i].second + 1);
}
int main() {
  solve();
  return 0;
}
