#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
bool sprawdz(string a)
{
int dl=a.length();
dl=dl-1;
if(int(a[0])>64 && int(a[0])<91)
{
int x=0;
for(int i=1;i<dl;i++)
{
if(int (a[i])>96 && int (a[i])<123) x++;
else x=0;
}
if(x==dl-1) return true;
else return false;
}
else return false;
}
bool data1(string data)
{
string rok,miesiac,dzien;
int dl=data.length();
if(data[4]!='-' || data[7]!='-') return false;
else
{
if(dl!=10) return false;
else
{
for(int i=0;i<4;i++)
{
rok[i]=data[i];
}
for(int i=0;i<2;i++)
{
miesiac[i]=data[5+i];
}
for(int i=0;i<2;i++)
{
dzien[i]=data[8+i];
}
int x=atoi(rok.c_str());
int y=atoi(miesiac.c_str());
int z=atoi(dzien.c_str());
if(x<=2000 && x>=1900 && y<=12 && y>=1 && z<=31 && z>0) return true;
else return false;
}
}
}
int main()
{
string a,b,data,z;
while(cin>>z>>a>>z>>b>>z>>z>>data)
{
int dl=a.length();
if(sprawdz(a) && dl<=11)
{
dl=b.length();
if(sprawdz(b) && dl<=21)
{
if(data1(data)) cout<<"3\n";
else cout<<"2\n";
}
else cout<<"1\n";
}
else cout<<"0\n";
}
system("pause");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPHN0cmluZz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpib29sIHNwcmF3ZHooc3RyaW5nIGEpCnsKICAgIGludCBkbD1hLmxlbmd0aCgpOwogICAgZGw9ZGwtMTsKICAgIGlmKGludChhWzBdKT42NCAmJiBpbnQoYVswXSk8OTEpCiAgICB7CiAgICAgICAgaW50IHg9MDsKICAgICAgICBmb3IoaW50IGk9MTtpPGRsO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKGludCAoYVtpXSk+OTYgJiYgaW50IChhW2ldKTwxMjMpIHgrKzsKICAgICAgICAgICAgZWxzZSB4PTA7CiAgICAgICAgfQogICAgICAgIGlmKHg9PWRsLTEpIHJldHVybiB0cnVlOwogICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOwogICAgfQogICAgZWxzZSByZXR1cm4gZmFsc2U7Cn0KYm9vbCBkYXRhMShzdHJpbmcgZGF0YSkKewogICAgc3RyaW5nIHJvayxtaWVzaWFjLGR6aWVuOwogICAgaW50IGRsPWRhdGEubGVuZ3RoKCk7CiAgICBpZihkYXRhWzRdIT0nLScgfHwgZGF0YVs3XSE9Jy0nKSByZXR1cm4gZmFsc2U7CiAgICBlbHNlCiAgICB7CiAgICAgICAgaWYoZGwhPTEwKSByZXR1cm4gZmFsc2U7CiAgICBlbHNlCiAgICB7CiAgICAgICAgZm9yKGludCBpPTA7aTw0O2krKykKICAgICAgICB7CiAgICAgICAgICAgIHJva1tpXT1kYXRhW2ldOwogICAgICAgIH0KICAgICAgICBmb3IoaW50IGk9MDtpPDI7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgbWllc2lhY1tpXT1kYXRhWzUraV07CiAgICAgICAgfQogICAgICAgIGZvcihpbnQgaT0wO2k8MjtpKyspCiAgICAgICAgewogICAgICAgICAgICBkemllbltpXT1kYXRhWzgraV07CiAgICAgICAgfQogICAgICAgIGludCB4PWF0b2kocm9rLmNfc3RyKCkpOwogICAgICAgIGludCB5PWF0b2kobWllc2lhYy5jX3N0cigpKTsKICAgICAgICBpbnQgej1hdG9pKGR6aWVuLmNfc3RyKCkpOwogICAgICAgIGlmKHg8PTIwMDAgJiYgeD49MTkwMCAmJiB5PD0xMiAmJiB5Pj0xICYmIHo8PTMxICYmIHo+MCkgcmV0dXJuIHRydWU7CiAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7CgogICAgfQogICAgfQoKCgp9CgppbnQgbWFpbigpCnsKICAgIHN0cmluZyBhLGIsZGF0YSx6OwoKICAgIHdoaWxlKGNpbj4+ej4+YT4+ej4+Yj4+ej4+ej4+ZGF0YSkKICAgIHsKICAgICAgICBpbnQgZGw9YS5sZW5ndGgoKTsKICAgICAgICBpZihzcHJhd2R6KGEpICYmIGRsPD0xMSkKICAgICAgICB7CiAgICAgICAgICAgIGRsPWIubGVuZ3RoKCk7CiAgICAgICAgICAgIGlmKHNwcmF3ZHooYikgJiYgZGw8PTIxKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZihkYXRhMShkYXRhKSkgY291dDw8IjNcbiI7CiAgICAgICAgICAgICAgICBlbHNlIGNvdXQ8PCIyXG4iOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgY291dDw8IjFcbiI7CiAgICAgICAgfQogICAgICAgIGVsc2UgY291dDw8IjBcbiI7CgoKICAgIH0KCgogICAgc3lzdGVtKCJwYXVzZSIpOwogICAgcmV0dXJuIDA7Cn0K