#include <bits/stdc++.h>
using namespace std;
const long long int inf = 9e18;
const long double pi = 2 * acos(0.0);
long long int arr[600005], brr[600005];
void solve() {
  long long int n, k, ans = 0LL;
  cin >> n >> k;
  ;
  for (int i = 1; i <= n; i++) cin >> arr[i];
  ;
  ;
  for (int i = 1; i <= k; i++) cin >> brr[i];
  ;
  arr[0] = -inf;
  arr[n + 1] = inf;
  brr[k + 1] = n + 1;
  for (long long int i = 0; i < n + 2; ++i) arr[i] -= i;
  for (long long int i = 0; i < k + 1; ++i) {
    if (arr[brr[i]] > arr[brr[i + 1]]) {
      cout << -1 << "\n";
      return;
    }
  }
  for (long long int i = 0; i < k + 1; ++i) {
    long long int l = brr[i], r = brr[i + 1];
    vector<long long int> dp;
    for (long long int j = l + 1; j < r; ++j) {
      if (arr[j] >= arr[l] && arr[j] <= arr[r]) {
        long long int pos =
            upper_bound((dp).begin(), (dp).end(), arr[j]) - dp.begin();
        if (pos == (int)((dp).size()))
          dp.push_back(arr[j]);
        else
          dp[pos] = arr[j];
      }
    }
    ans += (r - l - 1) - ((int)((dp).size()));
  }
  cout << ans << "\n";
  return;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  long long int tc = 1;
  while (tc--) {
    solve();
  }
}
