#include <bits/stdc++.h>
using namespace std;
int H[100010], A[100010], B[100010], mp[100010];
struct node {
  int a, b, h;
} K[300010];
struct cmp {
  bool operator()(node a, node b) { return a.h > b.h; }
};
int N;
priority_queue<node, vector<node>, cmp> qu;
bool acmp(node a, node b) { return a.a < b.a; }
int main() {
  int i, j, k;
  int a, b, s, o;
  node q;
  scanf("%d", &N);
  for (i = 1; i <= N; i++) {
    scanf("%d", &A[i]);
    mp[A[i]] = i;
  }
  for (i = 1; i <= N; i++) scanf("%d", &B[i]);
  for (i = 1; i <= N; i++) H[i] = (1 << 30);
  k = 0;
  for (i = 1; i <= N; i++) {
    a = mp[B[i]];
    if (a > i) {
      K[k].a = 1;
      K[k].b = i;
      K[k].h = a - i;
      k++;
      K[k].a = i + N - a + 1;
      K[k].b = N;
      K[k].h = 0;
      k++;
    } else {
      K[k].a = i - a + 1;
      K[k].b = i;
      K[k].h = 0;
      k++;
    }
  }
  sort(K, K + k, acmp);
  o = 0;
  s = 0;
  for (i = 1; i <= N; i++) {
    s++;
    while (K[o].a == i) {
      K[o].h -= s;
      qu.push(K[o]);
      o++;
    }
    while (!qu.empty()) {
      q = qu.top();
      if (q.b < i)
        qu.pop();
      else
        break;
    }
    if (qu.empty()) continue;
    q = qu.top();
    H[i] = min(H[i], q.h + s);
  }
  while (!qu.empty()) qu.pop();
  k = 0;
  for (i = 1; i <= N; i++) {
    a = mp[B[i]];
    if (a > i) {
      K[k].a = i + 1;
      K[k].b = i + N - a + 1;
      K[k].h = N - a;
      k++;
    } else {
      K[k].a = 1;
      K[k].b = i - a + 1;
      K[k].h = i - a;
      k++;
      K[k].a = i + 1;
      K[k].b = N;
      K[k].h = N - a;
      k++;
    }
  }
  sort(K, K + k, acmp);
  o = 0;
  s = 0;
  for (i = 1; i <= N; i++) {
    s++;
    while (K[o].a == i) {
      K[o].h += s;
      qu.push(K[o]);
      o++;
    }
    while (!qu.empty()) {
      q = qu.top();
      if (q.b < i)
        qu.pop();
      else
        break;
    }
    if (qu.empty()) continue;
    q = qu.top();
    H[i] = min(H[i], q.h - s);
  }
  for (i = 1; i <= N; i++) printf("%d\n", H[i]);
  return 0;
}
