#include <iostream>
using namespace std;
void createFrq(int frq[], string word) {
for (int i = 0; i < (int)word.size(); ++i) {
if (word[i] >= 'A' && word[i] <= 'Z') {
word[i] += 32;
}
++frq[word[i]];
}
}
bool isValid(int frq[]) {
int cnt = 0;
for (int i = 'a'; i <= 'z'; ++i) {
if (frq[i] > 0) {
++cnt;
}
}
return cnt <= 2;
}
int main() {
string text;
int cntValid = 0;
while (getline(cin, text)) {
string currWord = "";
for (int i = 0; i <= (int)text.size(); ++i) {
if (isalpha(text[i])) {
currWord += text[i];
} else if (!text.empty()) {
int frqWord['z' + 1] = {0};
createFrq(frqWord, currWord);
if (isValid(frqWord)) {
++cntValid;
}
currWord = "";
}
}
}
cout << cntValid;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBjcmVhdGVGcnEoaW50IGZycVtdLCBzdHJpbmcgd29yZCkgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCAoaW50KXdvcmQuc2l6ZSgpOyArK2kpIHsKICAgICAgICBpZiAod29yZFtpXSA+PSAnQScgJiYgd29yZFtpXSA8PSAnWicpIHsKICAgICAgICAgICAgd29yZFtpXSArPSAzMjsKICAgICAgICB9CiAgICAgICAgKytmcnFbd29yZFtpXV07CiAgICB9Cn0KCmJvb2wgaXNWYWxpZChpbnQgZnJxW10pIHsKICAgIGludCBjbnQgPSAwOwogICAgZm9yIChpbnQgaSA9ICdhJzsgaSA8PSAneic7ICsraSkgewogICAgICAgIGlmIChmcnFbaV0gPiAwKSB7CiAgICAgICAgICAgICsrY250OwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBjbnQgPD0gMjsKfQoKaW50IG1haW4oKSB7CiAgICBzdHJpbmcgdGV4dDsKICAgIGludCBjbnRWYWxpZCA9IDA7CiAgICB3aGlsZSAoZ2V0bGluZShjaW4sIHRleHQpKSB7CiAgICAgICAgc3RyaW5nIGN1cnJXb3JkID0gIiI7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gKGludCl0ZXh0LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgIGlmIChpc2FscGhhKHRleHRbaV0pKSB7CiAgICAgICAgICAgICAgICBjdXJyV29yZCArPSB0ZXh0W2ldOwogICAgICAgICAgICB9IGVsc2UgaWYgKCF0ZXh0LmVtcHR5KCkpIHsKICAgICAgICAgICAgICAgIGludCBmcnFXb3JkWyd6JyArIDFdID0gezB9OwogICAgICAgICAgICAgICAgY3JlYXRlRnJxKGZycVdvcmQsIGN1cnJXb3JkKTsKICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkKGZycVdvcmQpKSB7CiAgICAgICAgICAgICAgICAgICAgKytjbnRWYWxpZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGN1cnJXb3JkID0gIiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBjb3V0IDw8IGNudFZhbGlkOwogICAgcmV0dXJuIDA7Cn0K