#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
const long long mxn = 3 * 1e9;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int t = 1;
  while (t--) {
    long long n, i = 0, j = 0, k;
    cin >> n >> k;
    long long a[n + 2], c[k + 2];
    a[0] = -mxn;
    a[n + 1] = mxn;
    c[0] = 0;
    c[k + 1] = n + 1;
    for (i = 1; i < n + 1; i++) cin >> a[i];
    for (i = 1; i < k + 1; i++) cin >> c[i];
    n += 2;
    k += 2;
    for (i = 1; i < k; i++) {
      if (a[c[i]] - a[c[i - 1]] < c[i] - c[i - 1]) break;
    }
    if (i < k) {
      cout << "-1\n";
      continue;
    }
    for (i = 0; i < n; i++) a[i] -= i;
    long long x, result = 0;
    for (x = 1; x < k; x++) {
      long long start = c[x - 1], end = c[x], ans = 1, y = 1;
      vector<long long> b(end - start + 5);
      b[1] = start;
      for (i = start + 1; i < end + 1; i++) {
        long long l = 1, r = ans;
        while (l < r) {
          long long mid = (l + r + 1) / 2;
          if (a[i] >= a[b[mid]])
            l = mid;
          else
            r = mid - 1;
        }
        if (a[i] < a[b[1]])
          y = l;
        else
          b[l + 1] = i, ans = max(ans, l + 1), y = l + 1;
      }
      result += end - start + 1 - y;
    }
    cout << result << "\n";
  }
  return 0;
}
