#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:16777216")
using namespace std;
const double eps = 1e-9;
const double pi = acos(-1.0);
const int maxn = (int)1e5 + 10;
const int INF = (int)1e9;
int n;
int a[maxn], b[maxn], p[maxn], pp[maxn], t[12 * maxn], cur[3 * maxn];
void build(int l, int r, int idx) {
  if (l == r) {
    t[idx] = cur[l];
  } else {
    int m = (l + r) >> 1;
    build(l, m, 2 * idx);
    build(m + 1, r, 2 * idx + 1);
    t[idx] = t[2 * idx] + t[2 * idx + 1];
  }
}
void update(int l, int r, int pos, int idx, int val) {
  if (pos < l || r < pos) return;
  if (l == r) {
    t[idx] += val;
  } else {
    int m = (l + r) >> 1;
    update(l, m, pos, 2 * idx, val);
    update(m + 1, r, pos, 2 * idx + 1, val);
    t[idx] = t[2 * idx] + t[2 * idx + 1];
  }
}
int get(int l, int r, int pos, int idx) {
  if (l == r) {
    if (t[idx] == 0) return INF;
    return abs(pos - l);
  } else {
    int m = (l + r) >> 1;
    if (pos < l) {
      if (t[2 * idx] > 0) return get(l, m, pos, 2 * idx);
      return get(m + 1, r, pos, 2 * idx + 1);
    } else if (r < pos) {
      if (t[2 * idx + 1] > 0) return get(m + 1, r, pos, 2 * idx + 1);
      return get(l, m, pos, 2 * idx);
    } else {
      return min(get(m + 1, r, pos, 2 * idx + 1), get(l, m, pos, 2 * idx));
    }
  }
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
    --a[i];
    p[a[i]] = i;
  }
  for (int j = 0; j < n; j++) {
    scanf("%d", &b[j]);
    --b[j];
    pp[b[j]] = j;
  }
  for (int j = 0; j < n; j++) {
    int x = pp[j] - p[j];
    x += n - 1;
    cur[x]++;
  }
  build(0, 3 * n - 1, 1);
  for (int i = 0; i < n; i++) {
    printf("%d\n", get(0, 3 * n - 1, n - 1 + i, 1));
    int x = pp[b[i]] - p[b[i]];
    x += n - 1;
    update(0, 3 * n - 1, x, 1, -1);
    x = n - 1 - p[b[i]];
    x += n - 1 + i + 1;
    update(0, 3 * n - 1, x, 1, 1);
  }
  return 0;
}
