#include <iostream>
#include <string>
using namespace std;
int main() {
string a;
bool errorimie = false, errornazwisko = false, errordata = false;
string imie, nazwisko, rok, miesiac, dzien;
while(cin >> a >> imie >> a >> nazwisko >> a >> a)
{
cin.ignore();
getline(cin, rok, '-');
getline(cin, miesiac, '-');
getline(cin, dzien);
if(imie[0] >= 'A' && imie[0] <= 'Z')
{
;
}
else
{
errorimie = true;
}
if(nazwisko[0] >= 'A' && nazwisko[0] <= 'Z')
{
;
}
else
{
errornazwisko = true;
}
for(int i = 1; i < nazwisko.length()-1; i++)
{
if(nazwisko[i] >= 'a' && nazwisko[i] <= 'z')
{
;
}
else
{
errornazwisko = true;
break;
}
}
if(nazwisko.length() > 1)
{
;
}
else
{
errornazwisko = true;
}
for(int i = 0; i < rok.length(); i++)
{
if(rok[i] < '0' || rok[i] > '9')
{
errordata = true;
}
}
for(int i = 0; i < miesiac.length(); i++)
{
if(miesiac[i] < '0' || miesiac[i] > '9')
{
errordata = true;
}
if(miesiac.length() == 1 && miesiac[0] == '0')
{
errordata = true;
}
}
for(int i = 0; i < dzien.length(); i++)
{
if(dzien[i] < '0' || dzien[i] > '9')
{
errordata = true;
}
if(dzien.length() == 1 && dzien[0] == '0')
{
errordata = true;
}
}
if(rok.length() != 4)
{
errordata = true;
}
if(miesiac.length() != 2)
{
errordata = true;
}
int roki, miesiaci, dzieni;
roki = atoi(rok.c_str());
miesiaci = atoi(miesiac.c_str());
dzieni = atoi(dzien.c_str());
if(roki < 1900 || roki > 2000)
{
errordata = true;
}
if(miesiaci <= 0 || miesiaci > 12)
{
errordata = true;
}
if(dzieni <= 0 || dzieni > 31)
{
errordata = true;
}
if(dzien[2] != 0)
{
cout << "3\n";
}
else if(errorimie)
{
cout << "0\n";
}
else if(errornazwisko)
{
cout << "1\n";
}
else if(errordata)
{
cout << "2\n";
}
else
{
cout << "3\n";
}
errorimie = false;
errornazwisko = false;
errordata = false;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbWFpbigpIHsKICAgIHN0cmluZyBhOwogICAgYm9vbCBlcnJvcmltaWUgPSBmYWxzZSwgZXJyb3JuYXp3aXNrbyA9IGZhbHNlLCBlcnJvcmRhdGEgPSBmYWxzZTsKICAgIHN0cmluZyBpbWllLCBuYXp3aXNrbywgcm9rLCBtaWVzaWFjLCBkemllbjsKICAgIHdoaWxlKGNpbiA+PiBhID4+IGltaWUgPj4gYSA+PiBuYXp3aXNrbyA+PiBhID4+IGEpCiAgICB7CiAgICAgICAgY2luLmlnbm9yZSgpOwogICAgICAgIGdldGxpbmUoY2luLCByb2ssICctJyk7CiAgICAgICAgZ2V0bGluZShjaW4sIG1pZXNpYWMsICctJyk7CiAgICAgICAgZ2V0bGluZShjaW4sIGR6aWVuKTsKCiAgICAgICAgaWYoaW1pZVswXSA+PSAnQScgJiYgaW1pZVswXSA8PSAnWicpCiAgICAgICAgewogICAgICAgICAgICA7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGVycm9yaW1pZSA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGlmKG5hendpc2tvWzBdID49ICdBJyAmJiBuYXp3aXNrb1swXSA8PSAnWicpCiAgICAgICAgewogICAgICAgICAgICA7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGVycm9ybmF6d2lza28gPSB0cnVlOwogICAgICAgIH0KICAgICAgICBmb3IoaW50IGkgPSAxOyBpIDwgbmF6d2lza28ubGVuZ3RoKCktMTsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgaWYobmF6d2lza29baV0gPj0gJ2EnICYmIG5hendpc2tvW2ldIDw9ICd6JykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZXJyb3JuYXp3aXNrbyA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZihuYXp3aXNrby5sZW5ndGgoKSA+IDEpCiAgICAgICAgewogICAgICAgICAgICA7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGVycm9ybmF6d2lza28gPSB0cnVlOwogICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IHJvay5sZW5ndGgoKTsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihyb2tbaV0gPCAnMCcgfHwgcm9rW2ldID4gJzknKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yZGF0YSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IG1pZXNpYWMubGVuZ3RoKCk7IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobWllc2lhY1tpXSA8ICcwJyB8fCBtaWVzaWFjW2ldID4gJzknKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yZGF0YSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihtaWVzaWFjLmxlbmd0aCgpID09IDEgJiYgbWllc2lhY1swXSA9PSAnMCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JkYXRhID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgZHppZW4ubGVuZ3RoKCk7IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZHppZW5baV0gPCAnMCcgfHwgZHppZW5baV0gPiAnOScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JkYXRhID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGR6aWVuLmxlbmd0aCgpID09IDEgJiYgZHppZW5bMF0gPT0gJzAnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yZGF0YSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYocm9rLmxlbmd0aCgpICE9IDQpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yZGF0YSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYobWllc2lhYy5sZW5ndGgoKSAhPSAyKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcmRhdGEgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgaW50IHJva2ksIG1pZXNpYWNpLCBkemllbmk7CiAgICAgICAgcm9raSA9IGF0b2kocm9rLmNfc3RyKCkpOwogICAgICAgIG1pZXNpYWNpID0gYXRvaShtaWVzaWFjLmNfc3RyKCkpOwogICAgICAgIGR6aWVuaSA9IGF0b2koZHppZW4uY19zdHIoKSk7CiAgICAgICAgaWYocm9raSA8IDE5MDAgfHwgcm9raSA+IDIwMDApCiAgICAgICAgewogICAgICAgICAgICBlcnJvcmRhdGEgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBpZihtaWVzaWFjaSA8PSAwIHx8IG1pZXNpYWNpID4gMTIpCiAgICAgICAgewogICAgICAgICAgICBlcnJvcmRhdGEgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBpZihkemllbmkgPD0gMCB8fCBkemllbmkgPiAzMSkKICAgICAgICB7CiAgICAgICAgICAgIGVycm9yZGF0YSA9IHRydWU7CiAgICAgICAgfQoKCiAgICAgICAgaWYoZHppZW5bMl0gIT0gMCkKICAgICAgICB7CiAgICAgICAgICAgIGNvdXQgPDwgIjNcbiI7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoZXJyb3JpbWllKQogICAgICAgIHsKICAgICAgICAgICAgY291dCA8PCAiMFxuIjsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihlcnJvcm5hendpc2tvKQogICAgICAgIHsKICAgICAgICAgICAgY291dCA8PCAiMVxuIjsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihlcnJvcmRhdGEpCiAgICAgICAgewogICAgICAgICAgICBjb3V0IDw8ICIyXG4iOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBjb3V0IDw8ICIzXG4iOwogICAgICAgIH0KICAgICAgICBlcnJvcmltaWUgPSBmYWxzZTsKICAgICAgICBlcnJvcm5hendpc2tvID0gZmFsc2U7CiAgICAgICAgZXJyb3JkYXRhID0gZmFsc2U7CiAgICB9Cn0=
SW1pZTogUm9tYW47IE5hendpc2tvOiBLb3dhbHNraTY7IERhdGEgdXIuOiAxOTAwLTAxLTMwCkltaWU6IEFuZHJ6ZWo7IE5hendpc2tvOiBLb3dhbDsgRGF0YSB1ci46IDE4OTktMTAtMTAKSW1pZTogcm9tYW47IE5hendpc2tvOiBOby13YWs7IERhdGEgdXIuOiAxMDk5LTExLTEyCkltaWU6IEFsaWNqYTsgTmF6d2lza286IE5vd2FrOyBEYXRhIHVyLjogMTk5MC0wMS0wMQ==
Imie: Roman; Nazwisko: Kowalski6; Data ur.: 1900-01-30
Imie: Andrzej; Nazwisko: Kowal; Data ur.: 1899-10-10
Imie: roman; Nazwisko: No-wak; Data ur.: 1099-11-12
Imie: Alicja; Nazwisko: Nowak; Data ur.: 1990-01-01