#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:16777216")
const int P = 13;
string s, t;
int arr[200000];
bool used[200000];
bool ok(int len) {
  memset(used, 0, sizeof used);
  string f;
  for (int i = 0; i < len; i++) used[arr[i]] = 1;
  for (int i = 0; i < s.size(); i++)
    if (!used[i]) f += s[i];
  if (f.size() < t.size()) return 0;
  int i = f.size() - 1, j = t.size() - 1;
  while (i >= 0 && j >= 0) {
    if (f[i] == t[j]) {
      --i;
      --j;
      if (j == -1) return 1;
    } else
      --i;
  }
  if (j == -1) return 0;
  return 0;
}
int main() {
  srand(time(0));
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin.sync_with_stdio(0);
  cout.tie(0);
  cin >> s >> t;
  for (int i = 0; i < s.size(); i++) {
    cin >> arr[i];
    --arr[i];
  }
  int l = 0, r = s.size();
  while (r - l > 1) {
    int m = (l + r) / 2;
    if (ok(m))
      l = m;
    else
      r = m;
  }
  cout << l;
  return 0;
}
