#include <iostream>
using namespace std;
int main() {
string imie, nazwisko, data, dataur;
int ib = 0, nb = 0, bu = 0, cos = 0;
while(cin >> imie >> imie >> nazwisko >> nazwisko >> data >> data) {
if(imie[0] >= 'A' && imie[0] <= 'Z' && imie.length()) {
for(int i = 1; i < imie.length()-1; i++) {
if(imie[i] >= 'a' && imie[i] <= 'z') {
;
}
else {
ib++;
}
}
}
else {
ib++;
}
if(nazwisko[0] >= 'A' && nazwisko[0] <= 'Z' && nazwisko.length() > 1) {
for(int i = 1; i < nazwisko.length()-1; i++) {
if(nazwisko[i] >= 'a' && nazwisko[i] <= 'z') {
;
}
else {
nb++;
}
}
}
int a;
cin.ignore();
getline(cin, dataur, '-');
if(dataur[0] >= '0' && dataur[0] <= '9' && dataur[1] >= '0' && dataur[1] <= '9' && dataur[2] >= '0' && dataur[2] <= '9' && dataur[3] >= '0' && dataur[3] <= '9')
;
else
bu++;
cos = atoi(dataur.c_str());
if(cos >= 1900 && cos <= 2000) {
;
}
else {
bu++;
}
getline(cin, dataur, '-');
if(dataur[0] >= '0' && dataur[0] <= '9' && dataur[1] >= '0')
;
else
bu++;
cos = atoi(dataur.c_str());
if(cos >= 1 && cos <= 12) {
;
}
else {
bu++;
}
getline(cin, dataur);
if(dataur[0] >= '0' && dataur[0] <= '9' && dataur[1] >= '0')
;
else
bu++;
cos = atoi(dataur.c_str());
if(cos >= 1 && cos <= 31) {
;
}
else {
bu++;
}
if(ib > 0){
cout << "0" << endl;
}
else if(nb > 0){
cout << "1" << endl;
}
else if(bu > 0){
cout << "2" << endl;
}
else{
cout << "3" << endl;
}
ib = 0; nb = 0; bu = 0;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CiAgICBzdHJpbmcgaW1pZSwgbmF6d2lza28sIGRhdGEsIGRhdGF1cjsKICAgIGludCBpYiA9IDAsIG5iID0gMCwgYnUgPSAwLCBjb3MgPSAwOwogICAgd2hpbGUoY2luID4+IGltaWUgPj4gaW1pZSA+PiBuYXp3aXNrbyA+PiBuYXp3aXNrbyA+PiBkYXRhID4+IGRhdGEpIHsKICAgICAgICBpZihpbWllWzBdID49ICdBJyAmJiBpbWllWzBdIDw9ICdaJyAmJiBpbWllLmxlbmd0aCgpKSB7CiAgICAgICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPCBpbWllLmxlbmd0aCgpLTE7IGkrKykgewogICAgICAgICAgICAgICAgaWYoaW1pZVtpXSA+PSAnYScgJiYgaW1pZVtpXSA8PSAneicpIHsKICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpYisrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpYisrOwogICAgICAgIH0KICAgICAgICBpZihuYXp3aXNrb1swXSA+PSAnQScgJiYgbmF6d2lza29bMF0gPD0gJ1onICYmIG5hendpc2tvLmxlbmd0aCgpID4gMSkgeyAKICAgICAgICAgICAgZm9yKGludCBpID0gMTsgaSA8IG5hendpc2tvLmxlbmd0aCgpLTE7IGkrKykgewogICAgICAgICAgICAgICAgaWYobmF6d2lza29baV0gPj0gJ2EnICYmIG5hendpc2tvW2ldIDw9ICd6JykgewogICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIG5iKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9ICAgICAgCiAgICBpbnQgYTsKICAgIGNpbi5pZ25vcmUoKTsKICAgIGdldGxpbmUoY2luLCBkYXRhdXIsICctJyk7CiAgICBpZihkYXRhdXJbMF0gPj0gJzAnICYmIGRhdGF1clswXSA8PSAnOScgJiYgZGF0YXVyWzFdID49ICcwJyAmJiBkYXRhdXJbMV0gPD0gJzknICYmIGRhdGF1clsyXSA+PSAnMCcgJiYgZGF0YXVyWzJdIDw9ICc5JyAmJiBkYXRhdXJbM10gPj0gJzAnICYmIGRhdGF1clszXSA8PSAnOScpCiAgICAgICAgOwogICAgZWxzZSAKICAgICAgICBidSsrOwogICAgY29zID0gYXRvaShkYXRhdXIuY19zdHIoKSk7CiAgICBpZihjb3MgPj0gMTkwMCAmJiBjb3MgPD0gMjAwMCkgewogICAgICAgIDsKICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgYnUrKzsKICAgIH0KICAgIGdldGxpbmUoY2luLCBkYXRhdXIsICctJyk7CiAgICBpZihkYXRhdXJbMF0gPj0gJzAnICYmIGRhdGF1clswXSA8PSAnOScgJiYgZGF0YXVyWzFdID49ICcwJykKICAgICAgICA7CiAgICBlbHNlCiAgICAgICAgYnUrKzsKICAgIGNvcyA9IGF0b2koZGF0YXVyLmNfc3RyKCkpOwogICAgaWYoY29zID49IDEgJiYgY29zIDw9IDEyKSB7CiAgICAgICAgOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgYnUrKzsKICAgIH0KICAgIGdldGxpbmUoY2luLCBkYXRhdXIpOwogICAgaWYoZGF0YXVyWzBdID49ICcwJyAmJiBkYXRhdXJbMF0gPD0gJzknICYmIGRhdGF1clsxXSA+PSAnMCcpCiAgICAgICAgOwogICAgZWxzZQogICAgICAgIGJ1Kys7CiAgICBjb3MgPSBhdG9pKGRhdGF1ci5jX3N0cigpKTsKICAgIGlmKGNvcyA+PSAxICYmIGNvcyA8PSAzMSkgewogICAgICAgIDsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGJ1Kys7CiAgICB9CiAgICBpZihpYiA+IDApewogICAgICAgIGNvdXQgPDwgIjAiIDw8IGVuZGw7CiAgICB9CiAgICBlbHNlIGlmKG5iID4gMCl7CiAgICAgICAgY291dCA8PCAiMSIgPDwgZW5kbDsKICAgIH0KICAgIGVsc2UgaWYoYnUgPiAwKXsKICAgICAgICBjb3V0IDw8ICIyIiA8PCBlbmRsOwogICAgfQogICAgZWxzZXsKICAgICAgICBjb3V0IDw8ICIzIiA8PCBlbmRsOwogICAgfQogICAgaWIgPSAwOyBuYiA9IDA7IGJ1ID0gMDsKICAgIH0KfQ==