#include <bits/stdc++.h>
using namespace std;
int list1[111111];
int pos[111111];
int list2[111111];
int n;
multiset<int> st;
int abs(int x) { return x > 0 ? x : -x; }
void find(int x, int &res1, int &res2) {
  multiset<int>::iterator i = st.lower_bound(x);
  multiset<int>::iterator j;
  if (i == st.begin()) {
    res1 = abs(*i - x);
    res2 = 111111111;
    return;
  }
  j = i;
  j--;
  res1 = abs(*i - x);
  res2 = abs(*j - x);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d", list1 + i);
    pos[list1[i]] = i;
  }
  for (int i = 1; i <= n; i++) {
    scanf("%d", list2 + i);
    st.insert(i - pos[list2[i]]);
  }
  int r1, r2;
  for (int offset = 0; offset < n; offset++) {
    find(offset, r1, r2);
    printf("%d\n", r1 > r2 ? r2 : r1);
    int i = offset + 1;
    st.erase(st.find(i - pos[list2[i]]));
    st.insert(n - pos[list2[i]] + i);
  }
  return 0;
}
