#include <bits/stdc++.h>
using namespace std;
int a[500010], b[500010], d[500010];
vector<int> c;
int main() {
  int n, k, ans = 0;
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    a[i] -= i;
  }
  for (int i = 1; i <= k; i++) scanf("%d", &b[i]);
  b[0] = 0, b[k + 1] = n + 1;
  a[0] = -1e9, a[n + 1] = 1e9;
  int flag = 1;
  for (int i = 1; i <= k; i++)
    if (a[b[i - 1]] > a[b[i]]) flag = 0;
  if (flag) {
    for (int i = 0; i <= k; i++) {
      int l = b[i], r = b[i + 1];
      c.clear();
      for (int i = l + 1; i < r; i++)
        if (a[i] <= a[r] && a[i] >= a[l]) c.push_back(a[i]);
      if (c.empty()) {
        ans += r - l - 1;
        continue;
      }
      d[1] = c[0];
      int len = 1;
      for (int j = 1; j < c.size(); j++) {
        if (c[j] >= d[len])
          d[++len] = c[j];
        else
          d[upper_bound(d + 1, d + len + 1, c[j]) - d] = c[j];
      }
      ans += r - l - 1 - len;
    }
    printf("%d\n", ans);
  } else
    printf("-1");
}
