#include <bits/stdc++.h>
using namespace std;
string a, b;
vector<int> vec(a.length());
bool good(int m)
{
string t = a;
for (int i = 0; i < m; i++)
{
t[vec[i]-1] = '*';
}
for (int i = 0; i <= a.length()-b.length(); i++)
{
int indb = 0;
for (int j = i; j < a.length(); j++)
{
if (indb == b.length())
return true;
if (t[j] == b[indb])
indb++;
}
if (indb == b.length())
return true;
}
return false;
}
int main()
{
cin >> a >> b;
vec.resize(a.length());
for (int i = 0; i < a.length(); i++)
{
cin >> vec[i];
}
int l = 0;
int r = a.length();
int ans;
while (l <= r)
{
int mid = (l + r) / 2;
if (good(mid))
{
ans = mid;
l = mid + 1;
}
else
r = mid - 1;
}
cout << ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cmluZyBhLCBiOwp2ZWN0b3I8aW50PiB2ZWMoYS5sZW5ndGgoKSk7Cgpib29sIGdvb2QoaW50IG0pCnsKICAgIHN0cmluZyB0ID0gYTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbTsgaSsrKQogICAgewogICAgICAgIHRbdmVjW2ldLTFdID0gJyonOwogICAgfQoKICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IGEubGVuZ3RoKCktYi5sZW5ndGgoKTsgaSsrKQogICAgewogICAgICAgIGludCBpbmRiID0gMDsKICAgICAgICBmb3IgKGludCBqID0gaTsgaiA8IGEubGVuZ3RoKCk7IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGlmIChpbmRiID09IGIubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgaWYgKHRbal0gPT0gYltpbmRiXSkKICAgICAgICAgICAgICAgIGluZGIrKzsKICAgICAgICB9CiAgICAgICAgaWYgKGluZGIgPT0gYi5sZW5ndGgoKSkKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7Cn0KCmludCBtYWluKCkKewogICAgY2luID4+IGEgPj4gYjsKICAgIHZlYy5yZXNpemUoYS5sZW5ndGgoKSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGEubGVuZ3RoKCk7IGkrKykKICAgIHsKICAgICAgICBjaW4gPj4gdmVjW2ldOwogICAgfQoKICAgIGludCBsID0gMDsKICAgIGludCByID0gYS5sZW5ndGgoKTsKICAgIGludCBhbnM7CiAgICB3aGlsZSAobCA8PSByKQogICAgewogICAgICAgIGludCBtaWQgPSAobCArIHIpIC8gMjsKICAgICAgICBpZiAoZ29vZChtaWQpKQogICAgICAgIHsKICAgICAgICAgICAgYW5zID0gbWlkOwogICAgICAgICAgICBsID0gbWlkICsgMTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgICByID0gbWlkIC0gMTsKICAgIH0KICAgIGNvdXQgPDwgYW5zOwp9