#include <bits/stdc++.h>

using namespace std;

const int INF = 1e+9 + 17;

struct Segment_Tree
{
    vector <int> a, b;
    vector <pair <int, int> > T;

    int sz;
    pair <int, int> ans;

    Segment_Tree(vector <int> &x, vector <int> &y)
    {
        sz = x.size();
        a = x;
        b = y;
        T.resize((sz << 2), {INF, -INF});
        build(1, 0, sz - 1);
    }

    void build (int v, int l, int r)
    {
        if (l > r)
            return;
        if (l == r)
        {
            T[v] = {b[l], a[r]};
            return;
        }

        int m = (l + r) >> 1;

        build(2*v, l, m);
        build(2*v + 1, m + 1, r);

        T[v].first = min(T[2*v].first, T[2*v + 1].first);
        T[v].second = max(T[2*v].second, T[2*v + 1].second);
    }

    void get_ans(int v, int L, int R, int l, int r)
    {
        if (L > R)
            return;

        if (l > r)
            return;

        if (L == l && r == R)
        {
            ans.first = min(ans.first,  T[v].first), ans.second = max(ans.second, T[v].second);
            return;
        }
        int m = (L + R) >> 1;

        get_ans(2*v, L, m, l, min(r, m));
        get_ans(2*v + 1, m + 1, R, max(l, m + 1), r);
    }

    int get_ans(int l, int r) {
        ans = {INF, -INF};

        get_ans(1, 0, sz - 1, l, r);

        return ans.second - ans.first;
    }
};

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    long long ANS = 0;
    cin >> n;

    vector <int> a(n);
    vector <int> b(n);

    for (int i = 0; i < n; i++) cin >> a[i];
    for (int i = 0; i < n; i++) cin >> b[i];

    Segment_Tree t = Segment_Tree(a, b);

    for (int l = 0; l < n; l++)
    {
        int L = l - 1, R = n - 1;

        while (R - L > 1)
        {
            int m = (L + R) >> 1;
            if (t.get_ans(l, m) >= 0)
                R = m;
            else
                L = m;
        }

        if (t.get_ans(l, R) == 0)
        {
            int l1 = R - 1, r1 = n;
            while (r1 - l1 > 1)
            {
                int m = (l1 + r1) >> 1;
                if (t.get_ans(l, m))
                    r1 = m;
                else
                    l1 = m;
            }
            ANS += r1 - R;
        }
    }

    cout << ANS << endl;
}
