#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
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 liczba = count(k.begin(), k.end(), ' ');
cout << liczba << " ";
} else if (tab[i] == 2) {
int liczba = 0;
if (isdigit(k[0])) liczba++;
for (size_t j = 1; j < k.size(); j++) {
if (isdigit(k[j]) && !isdigit(k[j - 1])) {
liczba++;
}
}
cout << liczba << " ";
} else if (tab[i] == 3) {
cout << words.size() << " ";
} else if (tab[i] == 4) {
int z = 0;
bool oski = true;
for (char ch : k) {
if (oski && ch == '.') {
z++;
oski = false;
} else if (isalpha(ch)) {
oski = true;
}
}
cout << z << " ";
} else if (tab[i] == 5) {
int d = 0;
for (const string& word : words) {
bool bajtek = true;
int a = word.size();
for (int j = 0; j < a / 2; j++) {
if (tolower(word[j]) != tolower(word[a - j - 1])) {
bajtek = false;
break;
}
}
if (bajtek) {
d++;
}
}
cout << d << " ";
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGludCBuOwogICAgY2luID4+IG47CiAgICBjaW4uaWdub3JlKCk7CiAgICAKICAgIHZlY3RvcjxpbnQ+IHRhYihuKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgY2luID4+IHRhYltpXTsKICAgIH0KICAgIGNpbi5pZ25vcmUoKTsKICAgIAogICAgc3RyaW5nIGs7CiAgICBnZXRsaW5lKGNpbiwgayk7CiAgICAKICAgIHZlY3RvcjxzdHJpbmc+IHdvcmRzOwogICAgc3RyaW5nIGM7CiAgICBmb3IgKGNoYXIgY2ggOiBrKSB7CiAgICAgICAgaWYgKGlzYWxwaGEoY2gpKSB7CiAgICAgICAgICAgIGMgKz0gY2g7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCFjLmVtcHR5KCkpIHsKICAgICAgICAgICAgICAgIHdvcmRzLnB1c2hfYmFjayhjKTsKICAgICAgICAgICAgICAgIGMuY2xlYXIoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmICghYy5lbXB0eSgpKSB3b3Jkcy5wdXNoX2JhY2soYyk7CiAgICAKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaWYgKHRhYltpXSA9PSAxKSB7CiAgICAgICAgICAgIGludCBsaWN6YmEgPSBjb3VudChrLmJlZ2luKCksIGsuZW5kKCksICcgJyk7CiAgICAgICAgICAgIGNvdXQgPDwgbGljemJhIDw8ICIgIjsKICAgICAgICB9IGVsc2UgaWYgKHRhYltpXSA9PSAyKSB7CiAgICAgICAgICAgIGludCBsaWN6YmEgPSAwOwogICAgICAgICAgICBpZiAoaXNkaWdpdChrWzBdKSkgbGljemJhKys7CiAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAxOyBqIDwgay5zaXplKCk7IGorKykgewogICAgICAgICAgICAgICAgaWYgKGlzZGlnaXQoa1tqXSkgJiYgIWlzZGlnaXQoa1tqIC0gMV0pKSB7CiAgICAgICAgICAgICAgICAgICAgbGljemJhKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY291dCA8PCBsaWN6YmEgPDwgIiAiOwogICAgICAgIH0gZWxzZSBpZiAodGFiW2ldID09IDMpIHsKICAgICAgICAgICAgY291dCA8PCB3b3Jkcy5zaXplKCkgPDwgIiAiOwogICAgICAgIH0gZWxzZSBpZiAodGFiW2ldID09IDQpIHsKICAgICAgICAgICAgaW50IHogPSAwOwogICAgICAgICAgICBib29sIG9za2kgPSB0cnVlOwogICAgICAgICAgICBmb3IgKGNoYXIgY2ggOiBrKSB7CiAgICAgICAgICAgICAgICBpZiAob3NraSAmJiBjaCA9PSAnLicpIHsKICAgICAgICAgICAgICAgICAgICB6Kys7CiAgICAgICAgICAgICAgICAgICAgb3NraSA9IGZhbHNlOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc2FscGhhKGNoKSkgewogICAgICAgICAgICAgICAgICAgIG9za2kgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvdXQgPDwgeiA8PCAiICI7CiAgICAgICAgfSBlbHNlIGlmICh0YWJbaV0gPT0gNSkgewogICAgICAgICAgICBpbnQgZCA9IDA7CiAgICAgICAgICAgIGZvciAoY29uc3Qgc3RyaW5nJiB3b3JkIDogd29yZHMpIHsKICAgICAgICAgICAgICAgIGJvb2wgYmFqdGVrID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGludCBhID0gd29yZC5zaXplKCk7CiAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGEgLyAyOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAodG9sb3dlcih3b3JkW2pdKSAhPSB0b2xvd2VyKHdvcmRbYSAtIGogLSAxXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYmFqdGVrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChiYWp0ZWspIHsKICAgICAgICAgICAgICAgICAgICBkKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY291dCA8PCBkIDw8ICIgIjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=