#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, m;
  vector<int> elementi;
  map<int, int> trazenje;
  vector<int> nadjeni;
  cin >> n;
  cin >> m;
  elementi.resize(1000000);
  for (int i = 0; i < n; i++) {
    trazenje[i] = 0;
  }
  for (int i = 1; i <= n; i++) {
    int x;
    cin >> x;
    elementi[i] = x;
  }
  int suma = 0;
  int elem = 0;
  for (int i = 1; i <= m; i++) {
    int x;
    cin >> x;
    trazenje[i] = x;
    suma += trazenje[i];
    if (trazenje[i] > 0) {
      elem++;
    }
  }
  nadjeni.resize(1000000);
  int temp = 0;
  int levo = 1;
  int desno = 0;
  int mini = n + 1;
  while (desno <= n) {
    desno++;
    nadjeni[elementi[desno]]++;
    if (nadjeni[elementi[desno]] == trazenje[elementi[desno]]) {
      temp++;
    }
    if (temp == elem) {
      while (nadjeni[elementi[levo]] > trazenje[elementi[levo]]) {
        nadjeni[elementi[levo]]--;
        levo++;
      }
      mini = min(mini, (desno - levo + 1));
    }
  }
  if (mini == n + 1) {
    cout << "-1" << endl;
  } else {
    cout << mini - suma << endl;
  }
  return 0;
}
