#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<long long> a(n), b(n);
    for (int i = 0; i < n; ++i) cin >> a[i];
    for (int i = 0; i < n; ++i) cin >> b[i];
    sort(a.begin(), a.end());
    sort(b.begin(), b.end());
    if (a.front() > b.back()) {  // 无法使 max(A) <= min(B)
        cout << -1 << '\n';
        return 0;
    }
    // 候选阈值:a 和 b 的所有值(去重)
    vector<long long> vals; vals.reserve(2*n);
    vals.insert(vals.end(), a.begin(), a.end());
    vals.insert(vals.end(), b.begin(), b.end());
    sort(vals.begin(), vals.end());
    vals.erase(unique(vals.begin(), vals.end()), vals.end());

    long long ans = 0;
    for (long long t : vals) {
        long long cntA = upper_bound(a.begin(), a.end(), t) - a.begin();
        long long cntB = b.end() - lower_bound(b.begin(), b.end(), t);
        if (cntA > 0 && cntB > 0) ans = max(ans, cntA + cntB);
    }
    cout << ans << '\n';
    return 0;
}