#include <bits/stdc++.h>
using namespace std;
long long int arr[500500];
int main() {
  int n, i, j, k, x, y, ans, temp, curr, m;
  int tc;
  cin >> n >> k;
  for (i = 1; i <= n; i++) {
    scanf("%lld", &arr[i]);
    arr[i] -= i;
  }
  vector<pair<long long int, int> > a;
  a.push_back({-1e15, 0});
  arr[0] = -1e15;
  for (i = 1; i <= k; i++) {
    scanf("%d", &curr);
    a.push_back({arr[curr], curr});
  }
  a.push_back({1e15, n + 1});
  arr[n + 1] = 1e15;
  k += 2;
  int wendy = 0;
  for (i = 0; i < k - 1; i++) {
    if (a[i].first > a[i + 1].first) {
      printf("-1\n");
      return 0;
    }
    vector<long long int> lis;
    for (j = a[i].second; j <= a[i + 1].second; j++) {
      auto it = upper_bound(lis.begin(), lis.end(), arr[j]);
      if (it != lis.end()) {
        if (arr[j] < a[i].first) continue;
        *it = arr[j];
      } else {
        if (arr[j] > a[i + 1].first) continue;
        lis.push_back(arr[j]);
      }
    }
    wendy += a[i + 1].second - a[i].second + 1 - (int)lis.size();
  }
  cout << wendy << endl;
  return 0;
}
