#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main() {
int num;
cin >> num;//单词个数
vector<string> words(num);
for(int i = 0;i<num;i++){
cin >> words[i];
}
string str;
cin.ignore();//忽略换行,使得getline可以读取下一行元素
getline(cin, str);
vector<int> ch(27,0);//记录字符串中各个字母是否出现
for(int i = 0;i<str.size();i++){
if(str[i]=='?'){
ch[26]++;
}
else if(str[i]>='a'&&str[i]<='z'){
ch[str[i] - 'a']++;
}
}
int count = 0;
bool flag = true;
for(int i = 0;i<words.size();i++){//遍历单词数组,判断是否能够学习
vector<int>ch1 = ch;//每次重新对比字母序列
for(int j = 0;j<words[i].size();j++){//遍历第i个单词
if(ch1[words[i][j] - 'a'] > 0){
ch1[words[i][j] - 'a']--;//使用一个字符
}
else if(ch1[words[i][j] - 'a'] == 0 && ch1[26]>0){
ch1[26]--;//借用一个问号
}
else{//无法匹配,则无法学习
flag = false;
}
}
//第i单词循环结束
if(flag){
count++;
}
else{
flag = true;//重新遍历下一个单词
}
}
cout << count << endl;
}