#include <bits/stdc++.h>
using namespace std;
int nastya[200001];
bool contido[200001];
string t, p;
bool contem(int m) {
  memset(contido, true, sizeof(contido));
  int cont = p.size(), ipt = 0;
  for (int i = 0; i <= m; i++) {
    contido[nastya[i]] = false;
  }
  for (int i = 0; i < t.size(); i++) {
    if (t[i] == p[ipt] && contido[i] == true) {
      ipt++;
      cont--;
    }
  }
  if (!cont) {
    return true;
  } else
    return false;
}
int r = -1;
void bin_s(int i, int f) {
  if (i > f) {
    return;
  }
  int m = (i + f) / 2;
  if (contem(m)) {
    r = m;
    bin_s(m + 1, f);
  } else
    bin_s(i, m - 1);
}
int main() {
  cin >> t >> p;
  for (int i = 0; i < t.size(); i++) {
    cin >> nastya[i];
    nastya[i]--;
  }
  bin_s(0, t.size() - 1);
  cout << r + 1 << endl;
  return 0;
}
