#include <cstdio>#include <cstring>#include <algorithm>usingnamespacestd;
int a[200100], b[200100], n;
int st1[200100][21], st2[200100][21], p[21], lg[200100];
int rmq1(int i, int j)
{
int k = lg[j - i + 1];
return max(st1[i][k], st1[j - p[k] + 1][k]);
}
int rmq2(int i, int j)
{
int k = lg[j - i + 1];
return min(st2[i][k], st2[j - p[k] + 1][k]);
}
int main()
{
scanf("%d", &n);
for (int i = 1; i <= n; i ++)scanf("%d", &a[i]);
for (int i = 1; i <= n; i ++)scanf("%d", &b[i]);
int tmp = 2;p[0] = 1;
for (int i = 1; i <= 20; i ++) p[i] = p[i - 1] * 2;
for (int i = 2; i <= n; i ++) {
lg[i] = lg[i - 1];
if (tmp <= i) lg[i] ++, tmp *= 2;
//printf("%d %d\n", i, lg[i]);
}
for (int i = 1; i <= n; i ++) st1[i][0] = a[i], st2[i][0] = b[i];
for (int i = 1; i <= 20 && p[i] <= n; i ++)
for (int j = 1; j <= n && j + p[i] - 1 <= n; j ++){
st1[j][i] = max(st1[j][i - 1], st1[j + p[i - 1]][i - 1]);
st2[j][i] = min(st2[j][i - 1], st2[j + p[i - 1]][i - 1]);
}
longlong ans = 0;
for (int i = 1; i <= n; i ++){
if (a[i] > b[i]) continue;
int l = i, r = n;
while(l != r){
int mid = (l + r) >> 1;
if (rmq1(i, mid) >= rmq2(i, mid)) r = mid;
else l = mid + 1;
}
if (rmq1(i, r) != rmq2(i, l)) continue;
int p = l;
l = i, r = n + 1;
while(l != r){
int mid = (l + r) >> 1;
if (rmq1(i, mid) > rmq2(i, mid)) r = mid;
else l = mid + 1;//printf("%d %d\n", l, r);
}
ans += l - p;
//
}
printf("%I64d\n", ans);
return0;
}