#include<iostream>
#include<queue>

using namespace std;

priority_queue< pair<int,char> > q;
string s, p; 
int a[200005];
int n;

int ktra(){
	int m = p.size();
	int count = 0;
	while (!q.empty()){
		pair<int,char> temp = q.top();
	//	cout << temp.first << " " << temp.second << endl;
		q.pop();
		if (temp.second == p[count]){
		//	cout << temp.first << " " << temp.second << endl;
			count++;
		}
		if (count == m){
			//cout << "1" << endl;
			return 1;
		}
	}
	//cout << "0" << endl;
	return 0;
}

int main(){
	cin >> s >> p;
	n = s.size();
	for (int i = 0; i < n; i++){
		cin >> a[i];
	}
//	if (s.substr(s.size()-p.size(),p.size()) == p){
//		cout << s.size() - p.size();
//		return 0;
//	}
	int l = 1, r = n;
	while(l<=r){
		while(!q.empty()) q.pop();
		int mid = (r+l)/2;
		for (int i = mid; i <= n; i++){
			q.push(make_pair(-a[i],s[a[i]-1]));
		}
		
		//cout << "l: " << l << " r: " << r << " mid: " << mid << endl;
		if (ktra()) l=mid+1;
		else r=mid-1;
		//cout << "l: " << l << " r: " << r << "	 mid: " << mid << endl;
		//system("pause");
	}
	cout << r;
	return 0;
}