#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5 + 7;
int M1[N][63], M2[N][63], n, ans;
void st_RMQ1()
{
int len = log2(n);
for(int j = 1; j <= len; j++)
for(int i = 0; i + (1 << j) - 1 <= n; i++)
M1[i][j] = max(M1[i][j-1], M1[i + (1 << (j - 1))][j - 1]);
}
void st_RMQ2()
{
int len = log2(n);
for(int j = 1; j <= len; j++)
for(int i = 0; i + (1 << j) - 1 <= n; i++)
M2[i][j] = min(M2[i][j-1], M2[i + (1 << (j - 1))][j - 1]);
}
int RMQ(int l, int r, int M[][63])
{
int k = log2(r - l + 1);
return max(M[l][k], M[r - (1 << k) + 1][k]);
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin>>n;
for(int i = 1; i <= n; i++)
cin>>M1[i][0];
for(int i = 1; i <= n; i++)
cin>>M2[i][0];
st_RMQ1();
st_RMQ2();
for(int i = 1; i <= n; i++)
{
int l = i, r = n;
while(l < r)
{
int mid = (l + r + 1) >> 1;
if(RMQ(i, mid, M1) <= RMQ(i, mid, M2))
l = mid;
else
r = mid - 1;
}
int tr = l;
l = i, r = n;
while(l < r)
{
int mid = (l + r) >> 1;
if(RMQ(i, mid, M1) >= RMQ(i, mid, M2))
r = mid;
else
l = mid + 1;
}
if(l == 0 || tr == 0)
continue;
if(RMQ(i, tr, M1) == RMQ(i, tr, M2) && RMQ(i, l, M1) == RMQ(i, l, M2) && l <= n && r > 0)
ans += tr - l + 1;
}
cout<<ans;
return 0;
}