#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-9;
const double PI = acos(-1);
const int INF = (int)1e9 + 9;
const int MAXN = (int)4e6 + 7;
int n;
int a[MAXN];
int b[MAXN];
int d[MAXN];
int delta;
int pos[MAXN];
multiset<int> M;
multiset<int> P;
int get(int x) { return d[x] + delta; }
void add(int x, int y) {
  int cval = d[x];
  if (cval + delta <= 0) {
    M.erase(M.find(cval));
  } else {
    P.erase(P.find(cval));
  }
  d[x] += y;
  cval += y;
  if (cval + delta <= 0) {
    M.insert(cval);
  } else {
    P.insert(cval);
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    pos[a[i]] = i;
  }
  for (int i = 1; i <= n; i++) {
    scanf("%d", &b[i]);
    d[b[i]] = i - pos[b[i]];
    if (d[b[i]] <= 0)
      M.insert(d[b[i]]);
    else
      P.insert(d[b[i]]);
  }
  vector<int> all;
  for (int i = n; i > 0; i--) {
    add(b[i], -n);
    delta++;
    while (!M.empty()) {
      auto it = --M.end();
      if (*it + delta > 0) {
        P.insert(*it);
        M.erase(it);
      } else {
        break;
      }
    }
    int ans = INF;
    if (!M.empty()) {
      ans = min(ans, -*M.rbegin() - delta);
    }
    if (!P.empty()) {
      ans = min(ans, delta + *P.begin());
    }
    all.push_back(ans);
  }
  reverse(all.begin(), all.end());
  for (auto x : all) printf("%d\n", x);
  return 0;
}
