#include <bits/stdc++.h>
using namespace std;
long long int n, m;
long long int arr[600000];
long long int brr[600000];
long long int crr[600000];
vector<long long int> lis;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ;
  long long int TESTS, q, a, b, l, r, c, k, p, h, w, d, x, y, z, xs, ys, t, f;
  TESTS = 1;
  while (TESTS--) {
    cin >> n >> k;
    long long int ans = 0;
    bool pos = true;
    for (long long int i = 0; i <= n - 1; i++) cin >> arr[i];
    for (long long int i = 0; i <= k - 1; i++) cin >> brr[i];
    for (long long int i = 0; i <= n - 1; i++) crr[i] = arr[i] - i;
    arr[n] = 1e14;
    crr[n] = arr[n] - n;
    sort(brr, brr + k);
    long long int prev = -1e14;
    long long int ind = 0;
    long long int cou = 0;
    long long int cur;
    long long int las = -1e14;
    for (long long int i = 0; i <= k - 1; i++) {
      cou = 0;
      cur = brr[i] - 1;
      lis.clear();
      if (crr[cur] < las) pos = false;
      las = crr[cur];
      for (long long int j = ind; j <= cur - 1; j++) {
        cou++;
        if (arr[j] > prev + j - ind && arr[j] <= arr[cur] - cur + j) {
          if (lis.empty()) {
            lis.push_back(crr[j]);
          } else {
            long long int ind =
                upper_bound(lis.begin(), lis.end(), crr[j]) - lis.begin();
            if (ind == lis.size())
              lis.push_back(crr[j]);
            else
              lis[ind] = crr[j];
          }
        }
      }
      ans += cou - lis.size();
      prev = arr[cur];
      ind = cur + 1;
    }
    cou = 0;
    cur = n;
    lis.clear();
    if (crr[cur] < las) pos = false;
    las = crr[cur];
    for (long long int j = ind; j <= cur - 1; j++) {
      cou++;
      if (arr[j] > prev + j - ind && arr[j] <= arr[cur] - cur + j) {
        if (lis.empty()) {
          lis.push_back(crr[j]);
        } else {
          long long int ind =
              upper_bound(lis.begin(), lis.end(), crr[j]) - lis.begin();
          if (ind == lis.size())
            lis.push_back(crr[j]);
          else
            lis[ind] = crr[j];
        }
      }
    }
    ans += cou - lis.size();
    (pos) ? cout << ans : cout << -1;
  }
  return 0;
}
