#include <bits/stdc++.h>
#define __Made return
#define in 0
#define China__ ;
using namespace std;
int n, m;
map<int, int> mp;
int x[200005], a[200005];
int nx, lx, la;
long long ans;
int main()
{
scanf("%d %d", &n, &m);
for(int i = 1; i <= m; i++)
scanf("%d", &x[i]);
for(int i = 1; i <= m; i++)
scanf("%d", &a[i]);
for(int i = 1; i <= m; i++)
mp[x[i]] = a[i];
la = 1;
for(auto i : mp)
{
nx = i.first;
if(la != nx - lx)
{
printf("-1");
return 0;
}
ans += 1ll * (nx - lx) * (nx - lx - 1) / 2;
lx = nx;
la = i.second;
}
if(la != n - lx + 1)
{
printf("-1");
return 0;
}
ans += 1ll * (n - lx + 1) * (n - lx) / 2;
printf("%lld", ans);
__Made in China__
}