#include <bits/stdc++.h>
using namespace std;
vector<int> o, p, e;
int n, i, j, x;
int a[200000], b[200000];
struct T {
  int i;
} t;
bool operator<(T t1, T t2) {
  if ((t2.i - x - a[b[t2.i]] + 2 * n) % n !=
      (t1.i - x - a[b[t1.i]] + 2 * n) % n)
    return (t2.i - x - a[b[t2.i]] + 2 * n) % n <
           (t1.i - x - a[b[t1.i]] + 2 * n) % n;
  return t1.i < t2.i;
}
priority_queue<T> qp;
set<T> qo;
set<T>::iterator it;
int main() {
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d", &x);
    a[x - 1] = i;
  }
  for (i = 0; i < n; i++) {
    scanf("%d", &b[i]);
    b[i]--;
  }
  x = 0;
  for (i = 0; i < n; i++)
    if (a[b[i]] < i) {
      t.i = i;
      qp.push(t);
    } else if (a[b[i]] > i) {
      t.i = i;
      qo.insert(t);
    } else
      e.push_back(i);
  for (i = 0; i < n; i++) {
    x = 1999999999;
    if (e.size())
      printf("0\n");
    else {
      if (qp.size()) {
        t = qp.top();
        x = min(x, (t.i - i + n) % n - a[b[t.i]]);
      }
      if (qo.size()) {
        it = qo.begin();
        j = it->i;
        x = min(x, a[b[j]] - (j - i + n) % n);
      }
      printf("%d\n", x);
    }
    x = i + 1;
    for (j = 0; j < e.size(); j++) {
      if (e[j] != i) {
        t.i = e[j];
        qo.insert(t);
      } else {
        t.i = e[j];
        qp.push(t);
      }
    }
    e.clear();
    while (!qp.empty()) {
      t = qp.top();
      if ((t.i - i - 1 + n) % n == a[b[t.i]]) {
        e.push_back(t.i);
        qp.pop();
      } else
        break;
    }
    t.i = i;
    it = qo.find(t);
    if (it != qo.end()) {
      qo.erase(t);
      if (a[b[i]] == n - 1)
        e.push_back(i);
      else {
        t.i = i;
        qp.push(t);
      }
    }
  }
  return 0;
}
