#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
const int N = 5e5 + 5;
int n, k, a[N], b[N];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> k;
  for (int i = 1; i <= n; i++) cin >> a[i], a[i] -= i;
  for (int i = 1; i <= k; i++) cin >> b[i];
  a[0] = -1e9, a[n + 1] = 1e9;
  b[k + 1] = n + 1;
  int ans = 0;
  for (int i = 1; i <= k + 1; i++) {
    int l = b[i - 1], r = b[i];
    if (a[l] > a[r]) return cout << -1, 0;
    vector<int> v;
    for (int j = l + 1; j < r; j++) {
      if (a[l] <= a[j] && a[j] <= a[r]) {
        auto p = upper_bound(v.begin(), v.end(), a[j]);
        if (p == v.end())
          v.push_back(a[j]);
        else
          *p = a[j];
      }
    }
    ans += r - l - v.size() - 1;
  }
  cout << ans;
  return 0;
}
