#include <iostream>
#include <iomanip>
#include <cctype>
#include <sstream>
using namespace std;
bool sprawdz_imie(char wyraz[])
{
int k=0;
while(wyraz[k]!=59)
{
k++;
}
for(int g=0; g<k; g++)
{
if(wyraz[g]>90 && wyraz[g]<97 || (wyraz[g]<65 || wyraz[g]>122))
{
return false;
}
}
if(wyraz[0]>=65 && wyraz[0]<=90 && k>=1 && k<=10)
{
return true;
}
else
{
return false;
}
}
bool sprawdz_nazwisko(char wyraz[])
{
int k=0;
while(wyraz[k]!=59)
{
k++;
}
for(int g=0; g<k; g++)
{
if(wyraz[g]>90 && wyraz[g]<97 || (wyraz[g]<65 || wyraz[g]>122))
{
return false;
}
}
if(wyraz[0]>=65 && wyraz[0]<=90 && k>=1 && k<=20)
{
return true;
}
else
{
return false;
}
}
bool sprawdz_data(char wyraz[])
{
string rok="";
string miesiac="";
string dzien="";
for(int i=0; i<4; i++)
{
rok+=wyraz[i];
}
for(int i=5; i<7; i++)
{
miesiac+=wyraz[i];
}
for(int i=8; i<10; i++)
{
dzien+=wyraz[i];
}
int j,k,l;
istringstream konwert1(rok);
istringstream konwert2(miesiac);
istringstream konwert3(dzien);
konwert1 >> j;
konwert2 >> k;
konwert3 >> l;
if(j>=1900 && j<=2000 && k>=1 && k<=12 && l>=1 && l<=31)return true;
else return false;
}
int main()
{
char imie[10];
char nazwisko[20];
char data[10];
char tekst1[5];
char tekst2[9];
char tekst3[4];
char tekst4[4];
while(cin>>tekst1>>imie>>tekst2>>nazwisko>>tekst3>>tekst4>>data)
{
if(sprawdz_imie(imie)!=true)cout<<0<<endl;
else if(sprawdz_imie(imie)==true && sprawdz_nazwisko(nazwisko)!=true)cout<<1<<endl;
else if(sprawdz_imie(imie)==true && sprawdz_nazwisko(nazwisko)==true && sprawdz_data(data)!=true)cout<<2<<endl;
else cout<<3<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNjdHlwZT4KI2luY2x1ZGUgPHNzdHJlYW0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmJvb2wgc3ByYXdkel9pbWllKGNoYXIgd3lyYXpbXSkKewogICAgaW50IGs9MDsKICAgIHdoaWxlKHd5cmF6W2tdIT01OSkKICAgIHsKICAgICAgICBrKys7CiAgICB9CiAgICBmb3IoaW50IGc9MDsgZzxrOyBnKyspCiAgICB7CiAgICAgICAgaWYod3lyYXpbZ10+OTAgJiYgd3lyYXpbZ108OTcgfHwgKHd5cmF6W2ddPDY1IHx8IHd5cmF6W2ddPjEyMikpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQogICAgaWYod3lyYXpbMF0+PTY1ICYmIHd5cmF6WzBdPD05MCAmJiBrPj0xICYmIGs8PTEwKQogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfQoKCmJvb2wgc3ByYXdkel9uYXp3aXNrbyhjaGFyIHd5cmF6W10pCnsKCiAgICBpbnQgaz0wOwogICAgd2hpbGUod3lyYXpba10hPTU5KQogICAgewogICAgICAgIGsrKzsKICAgIH0KICAgIGZvcihpbnQgZz0wOyBnPGs7IGcrKykKICAgIHsKICAgICAgICBpZih3eXJheltnXT45MCAmJiB3eXJheltnXTw5NyB8fCAod3lyYXpbZ108NjUgfHwgd3lyYXpbZ10+MTIyKSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CiAgICBpZih3eXJhelswXT49NjUgJiYgd3lyYXpbMF08PTkwICYmIGs+PTEgJiYgazw9MjApCiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9CgoKYm9vbCBzcHJhd2R6X2RhdGEoY2hhciB3eXJheltdKQp7CiAgICAgICBzdHJpbmcgcm9rPSIiOwogICAgICAgc3RyaW5nIG1pZXNpYWM9IiI7CiAgICAgICBzdHJpbmcgZHppZW49IiI7CiAgICAgICBmb3IoaW50IGk9MDsgaTw0OyBpKyspCiAgICAgICB7CiAgICAgICAgICAgcm9rKz13eXJheltpXTsKICAgICAgIH0KICAgICAgIGZvcihpbnQgaT01OyBpPDc7IGkrKykKICAgICAgIHsKICAgICAgICAgICBtaWVzaWFjKz13eXJheltpXTsKICAgICAgIH0KICAgICAgIGZvcihpbnQgaT04OyBpPDEwOyBpKyspCiAgICAgICB7CiAgICAgICAgICAgZHppZW4rPXd5cmF6W2ldOwogICAgICAgfQoKCiAgICAgICBpbnQgaixrLGw7CiAgICAgICBpc3RyaW5nc3RyZWFtIGtvbndlcnQxKHJvayk7CiAgICAgICBpc3RyaW5nc3RyZWFtIGtvbndlcnQyKG1pZXNpYWMpOwogICAgICAgaXN0cmluZ3N0cmVhbSBrb253ZXJ0Myhkemllbik7CiAgICAgICBrb253ZXJ0MSA+PiBqOwogICAgICAga29ud2VydDIgPj4gazsKICAgICAgIGtvbndlcnQzID4+IGw7CgogICAgICAgaWYoaj49MTkwMCAmJiBqPD0yMDAwICYmIGs+PTEgJiYgazw9MTIgJiYgbD49MSAmJiBsPD0zMSlyZXR1cm4gdHJ1ZTsKICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOwp9CgoKaW50IG1haW4oKQp7CiAgICBjaGFyIGltaWVbMTBdOwogICAgY2hhciBuYXp3aXNrb1syMF07CiAgICBjaGFyIGRhdGFbMTBdOwogICAgY2hhciB0ZWtzdDFbNV07CiAgICBjaGFyIHRla3N0Mls5XTsKICAgIGNoYXIgdGVrc3QzWzRdOwogICAgY2hhciB0ZWtzdDRbNF07CiAgICB3aGlsZShjaW4+PnRla3N0MT4+aW1pZT4+dGVrc3QyPj5uYXp3aXNrbz4+dGVrc3QzPj50ZWtzdDQ+PmRhdGEpCiAgICB7CiAgICBpZihzcHJhd2R6X2ltaWUoaW1pZSkhPXRydWUpY291dDw8MDw8ZW5kbDsKICAgIGVsc2UgaWYoc3ByYXdkel9pbWllKGltaWUpPT10cnVlICYmIHNwcmF3ZHpfbmF6d2lza28obmF6d2lza28pIT10cnVlKWNvdXQ8PDE8PGVuZGw7CiAgICBlbHNlIGlmKHNwcmF3ZHpfaW1pZShpbWllKT09dHJ1ZSAmJiBzcHJhd2R6X25hendpc2tvKG5hendpc2tvKT09dHJ1ZSAmJiBzcHJhd2R6X2RhdGEoZGF0YSkhPXRydWUpY291dDw8Mjw8ZW5kbDsKICAgIGVsc2UgY291dDw8Mzw8ZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==
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