#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, d = 0;
cin >> n;
cin.ignore();
vector<int> tab(n);
for (int i = 0; i < n; i++) {
cin >> tab[i];
}
cin.ignore();
string k;
getline(cin, k);
vector<string> words;
string c;
for (char ch : k) {
if (isalpha(ch)) {
c += ch;
} else {
if (!c.empty()) {
words.push_back(c);
c.clear();
}
}
}
if (!c.empty()) words.push_back(c);
for (int i=0; i<n; i++) {
if (tab[i]==1) {
int liczbaa = 0;
for (char znak : k) {
if (isspace(znak))
{
liczbaa++;
}
}
cout<<liczbaa;
} else if (tab[i] == 2) {
int liczba=0;
if(k[0]>='0' && k[0]<='9')
{
liczba++;
}
for(int i=1; i<k.size(); i++)
{
if(k[i]>='0' && k[i]<='9' && (k[i-1]<'0' || k[i-1]>'9'))
{
liczba++;
}
}
cout<<liczba;
} else if (tab[i] == 3) {
cout<<words.size();
} else if (tab[i] == 4) {
int z=0;
bool oski=true;
for(int i=0; i<k.size(); i++)
{
if(oski && k[i]=='.')
{
z++;
oski = false;
}
else if(isalpha(k[i]))
{
oski = true;
}
}
cout<<z;
} else if (tab[i] == 5) {
for (const string& word : words) {
bool bajtek = true;
int a = word.size();
for (int j = 0; j < a; j++) {
if (word[j] != word[a - j - 1] && word[j]-32 != word[a - j - 1] && word[j] != word[a - j - 1]-32) {
bajtek = false;
break;
}
}
if (bajtek){
d++;
}
}
cout << d;
cout<<" ";
}
cout<<endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBtYWluKCkKewogICAgaW50IG4sIGQgPSAwOwogICAgY2luID4+IG47CiAgICBjaW4uaWdub3JlKCk7CgogICAgdmVjdG9yPGludD4gdGFiKG4pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBjaW4gPj4gdGFiW2ldOwogICAgfQogICAgY2luLmlnbm9yZSgpOwogICAgc3RyaW5nIGs7CiAgICBnZXRsaW5lKGNpbiwgayk7CiAgICB2ZWN0b3I8c3RyaW5nPiB3b3JkczsKICAgIHN0cmluZyBjOwogICAgZm9yIChjaGFyIGNoIDogaykgewogICAgICAgIGlmIChpc2FscGhhKGNoKSkgewogICAgICAgICAgICBjICs9IGNoOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICghYy5lbXB0eSgpKSB7CiAgICAgICAgICAgICAgICB3b3Jkcy5wdXNoX2JhY2soYyk7CiAgICAgICAgICAgICAgICBjLmNsZWFyKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZiAoIWMuZW1wdHkoKSkgd29yZHMucHVzaF9iYWNrKGMpOwogICAgZm9yIChpbnQgaT0wOyBpPG47IGkrKykgewogICAgICAgIGlmICh0YWJbaV09PTEpIHsKICAgICAgICAgICAgaW50IGxpY3piYWEgPSAwOwogICAgICAgICAgICBmb3IgKGNoYXIgem5hayA6IGspIHsKICAgICAgICAgICAgICAgIGlmIChpc3NwYWNlKHpuYWspKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGxpY3piYWErKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIGNvdXQ8PGxpY3piYWE7CiAgICAgICAgfSBlbHNlIGlmICh0YWJbaV0gPT0gMikgewogICAgICAgIGludCBsaWN6YmE9MDsKICAgICAgICBpZihrWzBdPj0nMCcgJiYga1swXTw9JzknKQogICAgICAgIHsKICAgICAgICAgICAgbGljemJhKys7CiAgICAgICAgfQogICAgICAgIGZvcihpbnQgaT0xOyBpPGsuc2l6ZSgpOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBpZihrW2ldPj0nMCcgJiYga1tpXTw9JzknICYmIChrW2ktMV08JzAnIHx8IGtbaS0xXT4nOScpKQogICAgICAgICAgICB7CiAgICAgICAgICAgIGxpY3piYSsrOwogICAgICAgICAgICB9CiAgICB9CiAgICBjb3V0PDxsaWN6YmE7CiAgICAgICAgfSBlbHNlIGlmICh0YWJbaV0gPT0gMykgewogICAgICAgICAgICBjb3V0PDx3b3Jkcy5zaXplKCk7CiAgICAgICAgfSBlbHNlIGlmICh0YWJbaV0gPT0gNCkgewogICAgICAgIGludCB6PTA7CiAgICAgICAgYm9vbCBvc2tpPXRydWU7CiAgICAgICAgZm9yKGludCBpPTA7IGk8ay5zaXplKCk7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKG9za2kgJiYga1tpXT09Jy4nKQogICAgICAgICAgICB7CiAgICAgICAgICAgIHorKzsKICAgICAgICAgICAgb3NraSA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoaXNhbHBoYShrW2ldKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgb3NraSA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBjb3V0PDx6OwogICAgICAgIH0gZWxzZSBpZiAodGFiW2ldID09IDUpIHsKICAgICAgICAgICAgZm9yIChjb25zdCBzdHJpbmcmIHdvcmQgOiB3b3JkcykgewogICAgICAgICAgICAgICAgYm9vbCBiYWp0ZWsgPSB0cnVlOwogICAgICAgICAgICAgICAgaW50IGEgPSB3b3JkLnNpemUoKTsKICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgYTsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmRbal0gIT0gd29yZFthIC0gaiAtIDFdICYmIHdvcmRbal0tMzIgIT0gd29yZFthIC0gaiAtIDFdICYmIHdvcmRbal0gIT0gd29yZFthIC0gaiAtIDFdLTMyKSAgewogICAgICAgICAgICAgICAgICAgICAgICBiYWp0ZWsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGJhanRlayl7CiAgICAgICAgICAgICAgICAgICAgZCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvdXQgPDwgZDsKICAgICAgICBjb3V0PDwiICI7CiAgICB9CiAgICBjb3V0PDxlbmRsOwp9CiAgICByZXR1cm4gMDsKfQo=