#include <bits/stdc++.h>
using namespace std;
const long long N = 5e5 + 5, inf = 1e18 + 100;
long long a[N], b[N];
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  long long n, k;
  cin >> n >> k;
  a[0] = -inf;
  for (long long i = 1; i <= n; ++i) {
    cin >> a[i];
    a[i] -= i;
  }
  a[n + 1] = inf;
  for (long long i = 1; i <= k; ++i) cin >> b[i];
  b[k + 1] = n + 1;
  long long cnt = 0;
  for (long long i = 0; i <= k; ++i) {
    long long l = b[i], r = b[i + 1];
    if (a[l] > a[r]) return cout << -1, 0;
    vector<long long> lis;
    for (long long j = l + 1; j < r; ++j) {
      if (a[l] <= a[j] && a[j] <= a[r]) {
        auto pos = upper_bound(lis.begin(), lis.end(), a[j]);
        if (pos == lis.end())
          lis.push_back(a[j]);
        else
          *pos = a[j];
      }
    }
    cnt += (r - l - 1) - (long long)lis.size();
  }
  cout << cnt;
  return 0;
}
