#include <bits/stdc++.h>
using namespace std;
int a[110000], b[110000];
struct DD {
  int dis, id;
  DD(int _dis = 0, int _id = 0) : dis(_dis), id(_id){};
  bool operator<(const DD &b) const { return dis > b.dis; }
};
int posA[110000];
int n, m;
int getNow(int i, int round) {
  int p = posA[b[i]];
  i -= (round - 1);
  if (i <= 0) i += n;
  return abs(i - p);
}
int main() {
  while (scanf("%d", &n) != EOF) {
    for (int i = 1; i <= n; i++) {
      scanf("%d", a + i);
      posA[a[i]] = i;
    }
    priority_queue<DD> pq1, pq2;
    for (int i = 1; i <= n; i++) {
      scanf("%d", b + i);
      if (posA[b[i]] <= i) {
        pq1.push(DD(i - posA[b[i]], i));
      } else {
        pq2.push(DD(posA[b[i]] - i, i));
      }
    }
    int ans = n + 1;
    if (!pq1.empty()) ans = min(ans, pq1.top().dis);
    if (!pq2.empty()) ans = min(ans, pq2.top().dis);
    printf("%d\n", ans);
    int add1 = 0, add2 = 0;
    for (int i = 2; i <= n; i++) {
      add1 -= 1;
      add2 += 1;
      while (!pq1.empty() && pq1.top().dis + add1 < 0) {
        int id = pq1.top().id;
        pq1.pop();
        pq2.push(DD(getNow(id, i) - add2, id));
      }
      pq1.push(DD(getNow(i - 1, i) - add1, i - 1));
      ans = n + 1;
      while (!pq1.empty() && getNow(pq1.top().id, i) != pq1.top().dis + add1)
        pq1.pop();
      while (!pq2.empty() && getNow(pq2.top().id, i) != pq2.top().dis + add2)
        pq2.pop();
      if (!pq1.empty()) ans = min(ans, pq1.top().dis + add1);
      if (!pq2.empty()) ans = min(ans, pq2.top().dis + add2);
      printf("%d\n", ans);
    }
  }
}
