#include <bits/stdc++.h>
using namespace std;
inline int Readint() {
  int ret = 0;
  int f = 1;
  char ch;
  do {
    ch = getchar();
    if (ch == '-') f *= -1;
  } while (ch >= 0 && (ch < '0' || ch > '9'));
  while ('0' <= ch && ch <= '9') {
    ret = ret * 10 + ch - '0';
    ch = getchar();
  }
  return ret * f;
}
void open() {
  freopen("E.in", "r", stdin);
  freopen("E.out", "w", stdout);
}
void close() {
  fclose(stdin);
  fclose(stdout);
}
const int MAXN = 2E6 + 10;
int ans;
int tot;
int p[MAXN];
int q[MAXN];
int aim[MAXN];
int pla[MAXN];
int n;
pair<int, int> opt[MAXN];
void init() {
  n = Readint();
  for (int i = 1, _END_ = n; i <= _END_; i++) p[i] = Readint(), pla[p[i]] = i;
  for (int i = 1, _END_ = n; i <= _END_; i++)
    q[i] = Readint(), p[pla[q[i]]] = i;
}
void work() {
  int now, nxt;
  int u;
  for (int i = 1, _END_ = n; i <= _END_; i++) {
    for (u = i; u <= n && p[u] != i; ++u)
      ;
    for (int j = u - 1, _END_ = i; j >= _END_; j--)
      if (p[j] >= u) {
        ans += u - j;
        tot++;
        opt[tot].first = u;
        opt[tot].second = j;
        swap(p[u], p[j]);
        u = j;
        j = u;
      }
  }
  printf("%d\n%d\n", ans, tot);
  for (int i = 1, _END_ = tot; i <= _END_; i++)
    printf("%d %d\n", opt[i].first, opt[i].second);
}
int main() {
  int _ = 0;
  init();
  work();
  close();
  return 0;
}
