#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, k;
  cin >> n >> k;
  vector<int> a(n + 2), b(k + 2);
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
    a[i] -= i;
  }
  a[0] = INT_MIN, a[n + 1] = INT_MAX;
  b[0] = 0;
  b[k + 1] = n + 1;
  for (int x, i = 1; i <= k; i++) {
    cin >> b[i];
  }
  auto check = [&]() {
    for (int i = 2; i <= k; i++) {
      if (a[b[i]] < a[b[i - 1]]) {
        return false;
      }
    }
    return true;
  };
  auto dp = [&](int l, int r) {
    vector<int> d;
    d.push_back(a[l]);
    for (int i = l + 1; i <= r; i++) {
      if (a[i] >= *d.rbegin()) {
        d.push_back(a[i]);
      } else {
        int j = upper_bound(d.begin(), d.end(), a[i]) - d.begin();
        if (j != 0) {
          d[j] = a[i];
        }
      }
    }
    int j = upper_bound(d.begin(), d.end(), a[r]) - d.begin();
    return r - l + 1 - j;
  };
  if (!check()) {
    cout << -1;
  } else {
    int res = 0;
    for (int i = 1; i <= k + 1; i++) {
      res += dp(b[i - 1], b[i]);
    }
    cout << res << endl;
  }
}
