#include<bits/stdc++.h>
using namespace std;
#define pii pair<int, int>
#define double long double
#define endl "\n"
#define fi first
#define se second
#define mapa make_pair
#define pushb push_back
#define pushf push_front
#define popb pop_back
#define popf pop_front
#define o_ ordered_
#define ins insert
#define era erase
#define pqueue priority_queue
#define CountBit __builtin_popcount
#define PosBit __builtin_ctz
#define minele min_element
#define maxele max_element
#define lb lower_bound // >=
#define ub upper_bound // >
#define debug cout << "NO ERROR", exit(0)
#define FAST ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
#define MASK(i) (1LL << (i))
#define BIT(x, i) (((x) >> (i)) & 1)
#define ALL(v) v.begin(), v.end()
#define SZ(v) (int)v.size()
#define sqr(x) ((x) * (x))
template<class X, class Y>
bool minimize(X &x, const Y &y) {
if (x > y)
{
x = y;
return true;
}
return false;
}
template<class X, class Y>
bool maximize(X &x, const Y &y) {
if (x < y)
{
x = y;
return true;
}
return false;
}
const int MOD = 1e9 + 7; //998244353;
const int LOG = 18;
const int INF = 1e9 + 7;
const int d4x[4] = {-1, 1, 0, 0};
const int d4y[4] = {0, 0, 1, -1};
const char c4[4] = {'U', 'D', 'R', 'L'};
const int d8x[8] = {0, 1, 1, 1, 0, -1, -1, -1};
const int d8y[8] = {1, 1, 0, -1, -1, -1, 0, 1};
#define MAX 2005
int f[MAX][MAX], g[MAX][MAX], k, n, a[MAX], b[MAX];
bool vis[MAX][MAX];
int getf(int l, int r, int x) {
minimize(r, n);
// cout << l << " " << r << " " << x << endl;
return f[r][x] - f[l - 1][x];
}
int getg(int l, int r, int x) {
return g[r][x] - g[l - 1][x];
}
bool ok;
void dfs(int l, int r) {
if (r - l + 1 == n) ok = true;
if (ok) return;
if (vis[l][r]) return;
vis[l][r] = true;
int x = l > 1 ? b[l - 1] : -1;
int y = r < 2 * n ? b[r + 1] : -1;
if (x != -1 && getf(1, r - l + 2 + k, x) > getg(l, r, x)) {
dfs(l - 1, r);
}
if (x != -1 && getf(1, r - l + 2 + k, y) > getg(l, r, y)) {
dfs(l, r + 1);
}
}
bool check() {
memset(vis, false, sizeof vis);
ok = false;
for (int i = 1; i <= n; i++) if (getf(1, k + 1, b[i])) {
// cout << i << " " << b[i] << endl;
dfs(i + n, i + n);
dfs(i, i);
}
// cout << k << " " << ok << endl;
return ok;
}
void solve() {
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= n; i++) cin >> b[i];
for (int i = 1; i <= n; i++) b[n + i] = b[i];
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
f[i][j] += f[i - 1][j];
}
f[i][a[i]]++;
}
for (int i = 1; i <= 2 * n; i++) {
for (int j = 1; j <= n; j++) {
g[i][j] += g[i - 1][j];
}
g[i][b[i]]++;
}
int l = 0, r = n, mid, ans;
while (l <= r) {
mid = (l + r) / 2;
k = mid;
// cout << l << " " << r << endl;
if (check()) {
r = mid - 1;
ans = mid;
}
else l = mid + 1;
// debug;
}
cout << ans << endl;
}
signed main() {
freopen("flower.inp", "r", stdin);
freopen("flower.out", "w", stdout);
FAST;
bool TestCase = 0;
int NumTest = 1;
// cin >> NumTest;
for (int i = 1; i <= NumTest; i++) {
if (TestCase) cout << "Case" << " " << i << ": ";
solve();
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBwaWkgcGFpcjxpbnQsIGludD4KI2RlZmluZSBkb3VibGUgbG9uZyBkb3VibGUKI2RlZmluZSBlbmRsICJcbiIKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIG1hcGEgbWFrZV9wYWlyCiNkZWZpbmUgcHVzaGIgcHVzaF9iYWNrCiNkZWZpbmUgcHVzaGYgcHVzaF9mcm9udAojZGVmaW5lIHBvcGIgcG9wX2JhY2sKI2RlZmluZSBwb3BmIHBvcF9mcm9udAojZGVmaW5lIG9fIG9yZGVyZWRfCiNkZWZpbmUgaW5zIGluc2VydAojZGVmaW5lIGVyYSBlcmFzZQojZGVmaW5lIHBxdWV1ZSBwcmlvcml0eV9xdWV1ZQojZGVmaW5lIENvdW50Qml0IF9fYnVpbHRpbl9wb3Bjb3VudAojZGVmaW5lIFBvc0JpdCBfX2J1aWx0aW5fY3R6CiNkZWZpbmUgbWluZWxlIG1pbl9lbGVtZW50CiNkZWZpbmUgbWF4ZWxlIG1heF9lbGVtZW50CiNkZWZpbmUgbGIgbG93ZXJfYm91bmQgLy8gPj0KI2RlZmluZSB1YiB1cHBlcl9ib3VuZCAvLyA+CiNkZWZpbmUgZGVidWcgY291dCA8PCAiTk8gRVJST1IiLCBleGl0KDApCiNkZWZpbmUgRkFTVCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApLCBjaW4udGllKDApLCBjb3V0LnRpZSgwKTsKI2RlZmluZSBNQVNLKGkpICgxTEwgPDwgKGkpKQojZGVmaW5lIEJJVCh4LCBpKSAoKCh4KSA+PiAoaSkpICYgMSkKI2RlZmluZSBBTEwodikgdi5iZWdpbigpLCB2LmVuZCgpCiNkZWZpbmUgU1oodikgKGludCl2LnNpemUoKQojZGVmaW5lIHNxcih4KSAoKHgpICogKHgpKQoKdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4KICAgIGJvb2wgbWluaW1pemUoWCAmeCwgY29uc3QgWSAmeSkgewogICAgICAgIGlmICh4ID4geSkKICAgICAgICB7CiAgICAgICAgICAgIHggPSB5OwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp0ZW1wbGF0ZTxjbGFzcyBYLCBjbGFzcyBZPgogICAgYm9vbCBtYXhpbWl6ZShYICZ4LCBjb25zdCBZICZ5KSB7CiAgICAgICAgaWYgKHggPCB5KQogICAgICAgIHsKICAgICAgICAgICAgeCA9IHk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cgpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsgLy85OTgyNDQzNTM7CmNvbnN0IGludCBMT0cgPSAxODsKY29uc3QgaW50IElORiA9IDFlOSArIDc7CmNvbnN0IGludCBkNHhbNF0gPSB7LTEsIDEsIDAsIDB9Owpjb25zdCBpbnQgZDR5WzRdID0gezAsIDAsIDEsIC0xfTsKY29uc3QgY2hhciBjNFs0XSA9IHsnVScsICdEJywgJ1InLCAnTCd9Owpjb25zdCBpbnQgZDh4WzhdID0gezAsIDEsIDEsIDEsIDAsIC0xLCAtMSwgLTF9Owpjb25zdCBpbnQgZDh5WzhdID0gezEsIDEsIDAsIC0xLCAtMSwgLTEsIDAsIDF9OwoKI2RlZmluZSBNQVggMjAwNQoKaW50IGZbTUFYXVtNQVhdLCBnW01BWF1bTUFYXSwgaywgbiwgYVtNQVhdLCBiW01BWF07CmJvb2wgdmlzW01BWF1bTUFYXTsKCmludCBnZXRmKGludCBsLCBpbnQgciwgaW50IHgpIHsKICAgIG1pbmltaXplKHIsIG4pOwogICAgLy8gY291dCA8PCBsIDw8ICIgIiA8PCByIDw8ICIgIiA8PCB4IDw8IGVuZGw7CiAgICByZXR1cm4gZltyXVt4XSAtIGZbbCAtIDFdW3hdOwp9CmludCBnZXRnKGludCBsLCBpbnQgciwgaW50IHgpIHsKICAgIHJldHVybiBnW3JdW3hdIC0gZ1tsIC0gMV1beF07Cn0KCmJvb2wgb2s7CnZvaWQgZGZzKGludCBsLCBpbnQgcikgewogICAgaWYgKHIgLSBsICsgMSA9PSBuKSBvayA9IHRydWU7CiAgICBpZiAob2spIHJldHVybjsKICAgIGlmICh2aXNbbF1bcl0pIHJldHVybjsKICAgIHZpc1tsXVtyXSA9IHRydWU7CiAgICBpbnQgeCA9IGwgPiAxID8gYltsIC0gMV0gOiAtMTsKICAgIGludCB5ID0gciA8IDIgKiBuID8gYltyICsgMV0gOiAtMTsKICAgIGlmICh4ICE9IC0xICYmIGdldGYoMSwgciAtIGwgKyAyICsgaywgeCkgPiBnZXRnKGwsIHIsIHgpKSB7CiAgICAgICAgZGZzKGwgLSAxLCByKTsKICAgIH0KICAgIGlmICh4ICE9IC0xICYmIGdldGYoMSwgciAtIGwgKyAyICsgaywgeSkgPiBnZXRnKGwsIHIsIHkpKSB7CiAgICAgICAgZGZzKGwsIHIgKyAxKTsKICAgIH0KfQoKYm9vbCBjaGVjaygpIHsKICAgIG1lbXNldCh2aXMsIGZhbHNlLCBzaXplb2YgdmlzKTsKICAgIG9rID0gZmFsc2U7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGlmIChnZXRmKDEsIGsgKyAxLCBiW2ldKSkgewogICAgICAgIC8vIGNvdXQgPDwgaSA8PCAiICIgPDwgYltpXSA8PCBlbmRsOwogICAgICAgIGRmcyhpICsgbiwgaSArIG4pOwogICAgICAgIGRmcyhpLCBpKTsKICAgIH0KICAgIC8vIGNvdXQgPDwgayA8PCAiICIgPDwgb2sgPDwgZW5kbDsKICAgIHJldHVybiBvazsKfQoKCnZvaWQgc29sdmUoKSB7CgogICAgY2luID4+IG47CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBhW2ldOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gYltpXTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgYltuICsgaV0gPSBiW2ldOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IG47IGorKykgewogICAgICAgICAgICBmW2ldW2pdICs9IGZbaSAtIDFdW2pdOwogICAgICAgIH0KICAgICAgICBmW2ldW2FbaV1dKys7CiAgICB9CgogICBmb3IgKGludCBpID0gMTsgaSA8PSAyICogbjsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPD0gbjsgaisrKSB7CiAgICAgICAgICAgIGdbaV1bal0gKz0gZ1tpIC0gMV1bal07CiAgICAgICAgfQogICAgICAgIGdbaV1bYltpXV0rKzsKICAgIH0KCgogICAgaW50IGwgPSAwLCByID0gbiwgbWlkLCBhbnM7CiAgICB3aGlsZSAobCA8PSByKSB7CiAgICAgICAgbWlkID0gKGwgKyByKSAvIDI7CiAgICAgICAgayA9IG1pZDsKICAgICAgICAvLyBjb3V0IDw8IGwgPDwgIiAiIDw8IHIgPDwgZW5kbDsKICAgICAgICBpZiAoY2hlY2soKSkgewogICAgICAgICAgICByID0gbWlkIC0gMTsKICAgICAgICAgICAgYW5zID0gbWlkOwogICAgICAgIH0KICAgICAgICBlbHNlIGwgPSBtaWQgKyAxOwogICAgICAgIC8vIGRlYnVnOwogICAgfQoKICAgIGNvdXQgPDwgYW5zIDw8IGVuZGw7CgoKCgp9CgoKc2lnbmVkIG1haW4oKSB7CgogICAgZnJlb3BlbigiZmxvd2VyLmlucCIsICJyIiwgc3RkaW4pOwogICAgZnJlb3BlbigiZmxvd2VyLm91dCIsICJ3Iiwgc3Rkb3V0KTsKCiAgICBGQVNUOwogICAgYm9vbCBUZXN0Q2FzZSA9IDA7CiAgICBpbnQgTnVtVGVzdCA9IDE7CiAgICAvLyBjaW4gPj4gTnVtVGVzdDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IE51bVRlc3Q7IGkrKykgewogICAgICAgIGlmIChUZXN0Q2FzZSkgY291dCA8PCAiQ2FzZSIgPDwgIiAiIDw8IGkgPDwgIjogIjsKICAgICAgICBzb2x2ZSgpOwogICAgfQoKfQo=