#include <bits/stdc++.h>
using namespace std;
long long pw(long long base, long long e) {
  return e ? pw(base * base, e / 2) * (e % 2 ? base : 1) : 1;
}
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long to_int(string s) {
  long long ret = 0;
  for (int i = 0; i <= s.size(); i++) {
    ret += pw(10, s.size() - i - 1) * (long long)(s[i] - '0');
  }
  return ret;
}
const int maxn = 2e5 + 10, mod = 1e9 + 7;
const long long INF = 1e9;
string t, p;
int n;
int a[maxn], per[maxn];
int ans;
bool ok(int k) {
  int ind = 0;
  for (int i = 0; i < t.size(); i++) {
    if (ind < n && a[i] >= k && t[i] == p[ind]) {
      ind++;
    }
  }
  if (ind == p.size()) {
    return 1;
  }
  return 0;
}
int bs(int l, int r) {
  if (r - l <= 1) {
    return l;
  }
  int mid = (l + r) / 2;
  if (ok(mid)) {
    return bs(mid, r);
  } else {
    return bs(l, mid);
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> t >> p;
  n = p.size();
  for (int i = 0; i < t.size(); i++) {
    cin >> per[i];
    per[i]--;
    a[per[i]] = i;
  }
  cout << bs(0, t.size() + 1);
}
