#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000010;
const int maxm = 310;
const int mod = 1e9 + 7;
const int inf = 1e9 + 7;
const double eps = 1e-6;
int n, m;
int a[maxn], b[maxn];
int pa[maxn], pb[maxn];
struct Op {
  int x, y;
  Op() {}
  Op(int _x, int _y) {
    x = _x;
    y = _y;
  }
};
vector<Op> vans;
int main() {
  int i, j;
  while (scanf("%d", &n) != EOF) {
    vans.clear();
    for (i = 1; i <= n; i++) {
      scanf("%d", &a[i]);
      pa[a[i]] = i;
    }
    for (i = 1; i <= n; i++) {
      scanf("%d", &b[i]);
      pb[b[i]] = i;
    }
    int ans = 0;
    for (i = 1; i <= n; i++) {
      int x = b[i];
      while (pa[x] != pb[x]) {
        for (j = pb[x]; j < pa[x]; j++) {
          int y = a[j];
          if (pb[y] >= pa[x]) {
            ans += pa[x] - j;
            vans.push_back(Op(j, pa[x]));
            pa[y] = pa[x];
            a[j] = x;
            a[pa[x]] = y;
            pa[x] = j;
            break;
          }
        }
      }
    }
    printf("%d\n%d\n", ans, vans.size());
    for (i = 0; i < vans.size(); i++) {
      printf("%d %d\n", vans[i].x, vans[i].y);
    }
  }
  return 0;
}
