//
#include <bits/stdc++.h>
#define INF 0x7f7f7f7f
using namespace std;
const int maxn=300030,maxl=40;
int a[maxn],b[maxn],lg[maxn];
int f[maxn][maxl];
int n;
void breakdown(){
for(int i=0; i<n; i++)a[i+n+n]=a[i+n]=a[i];
for(int i=0; i<n; i++)b[i+n+n]=b[i+n]=b[i];
}
void STinit(){
for(int i=2; i<maxn; i++)lg[i]=lg[i/2]+1;
for(int i=0; i<n+n+n; i++)f[i][0]=a[i];
for(int j=1; j<=lg[n*3]; j++){
for(int i=0; i<n+n+n; i++){
f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
}
}
}
int quest(int l,int r){
int len=lg[r-l+1];
return max(f[l][len],f[r-(1<<len)+1][len]);
}
int main()
{
cin>>n;
for(int i=0; i<n; i++)cin>>a[i];
for(int i=0; i<n; i++)cin>>b[i];
breakdown();
STinit();
for(int i=n; i<2*n; i++){
int l,r;
int mina=INF;
//from i-1 to i-n/2
l=i-n/2,r=i-1;
// cout<<quest(l,r)<<endl;
if(quest(l,r)>=b[i]){
while(l<r){
//cout<<l<<"-"<<r<<endl;
int mid=(l+r)/2+1;
if(quest(mid,i-1)<b[i])r=mid-1;
else l=mid;
}
// cout<<i<<":"<<l<<endl;
mina=min(mina,i-l);
}
//cout<<mina<<endl;
//from i+1 to i+n/2
l=i+1,r=i+n/2;
if(quest(l,r)>=b[i]){
while(l<r){
int mid=(l+r)/2;
if(quest(i+1,mid)<b[i])l=mid+1;
else r=mid;
}
mina=min(mina,l-i);
}
if(mina==INF)cout<<-1<<" ";
else cout<<mina<<" ";
}cout<<endl;
return 0;
}