#include <bits/stdc++.h>
using namespace std;
const long long N = 5e5 + 10;
long long a[N], b[N], dp[N], ans[N];
signed main() {
  long long n, k, res = 0;
  cin >> n >> k;
  for (long long i = 1; i <= n; i++) cin >> a[i], a[i] -= i;
  for (long long i = 1; i <= k; i++) cin >> b[i];
  b[0] = 0, a[0] = -1e9, b[k + 1] = n + 1, a[n + 1] = 2e9;
  for (long long i = 2; i <= k; i++)
    if (a[b[i]] - a[b[i - 1]] < 0) return cout << -1 << '\n', 0;
  for (long long i = 0; i <= k; i++) {
    long long len, l = b[i], r = b[i + 1];
    dp[len = 1] = a[l];
    long long add = 0;
    for (long long j = l + 1; j <= r; j++) {
      if (a[j] >= dp[len]) {
        dp[++len] = a[j];
        if (j == r) res += r - l + 1 - len;
      } else {
        long long pos = upper_bound(dp + 1, dp + 1 + len, a[j]) - dp;
        if (pos != 1) dp[pos] = a[j];
        if (r == j) res += r - l + 1 - pos;
      }
    }
  }
  cout << res << '\n';
  return 0;
}
