#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];
if(int (miesiac[i])<47 || int (miesiac[i])>57) return false;
}
for(int i=0;i<2;i++)
{
dzien[i]=data[8+i];
if(int (dzien[i])<47 || int (dzien[i])>57) return false;
}
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";
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPHN0cmluZz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpib29sIHNwcmF3ZHooc3RyaW5nIGEpCnsKICAgIGludCBkbD1hLmxlbmd0aCgpOwogICAgZGw9ZGwtMTsKICAgIGlmKGludChhWzBdKT42NCAmJiBpbnQoYVswXSk8OTEpCiAgICB7CiAgICAgICAgaW50IHg9MDsKICAgICAgICBmb3IoaW50IGk9MTtpPGRsO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKGludCAoYVtpXSk+OTYgJiYgaW50IChhW2ldKTwxMjMpIHgrKzsKICAgICAgICAgICAgZWxzZSB4PTA7CiAgICAgICAgfQogICAgICAgIGlmKHg9PWRsLTEpIHJldHVybiB0cnVlOwogICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlOwogICAgfQogICAgZWxzZSByZXR1cm4gZmFsc2U7Cn0KYm9vbCBkYXRhMShzdHJpbmcgZGF0YSkKewogICAgc3RyaW5nIHJvayxtaWVzaWFjLGR6aWVuOwogICAgaW50IGRsPWRhdGEubGVuZ3RoKCk7CiAgICBpZihkYXRhWzRdIT0nLScgfHwgZGF0YVs3XSE9Jy0nKSByZXR1cm4gZmFsc2U7CiAgICBlbHNlCiAgICB7CiAgICAgICAgaWYoZGwhPTEwKSByZXR1cm4gZmFsc2U7CiAgICBlbHNlCiAgICB7CiAgICAgICAgZm9yKGludCBpPTA7aTw0O2krKykKICAgICAgICB7CiAgICAgICAgICAgIHJva1tpXT1kYXRhW2ldOwogICAgICAgIH0KICAgICAgICBmb3IoaW50IGk9MDtpPDI7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgbWllc2lhY1tpXT1kYXRhWzUraV07CiAgICAgICAgICAgIGlmKGludCAobWllc2lhY1tpXSk8NDcgfHwgaW50IChtaWVzaWFjW2ldKT41NykgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBmb3IoaW50IGk9MDtpPDI7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgZHppZW5baV09ZGF0YVs4K2ldOwogICAgICAgICAgICBpZihpbnQgKGR6aWVuW2ldKTw0NyB8fCBpbnQgKGR6aWVuW2ldKT41NykgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaW50IHg9YXRvaShyb2suY19zdHIoKSk7CiAgICAgICAgaW50IHk9YXRvaShtaWVzaWFjLmNfc3RyKCkpOwogICAgICAgIGludCB6PWF0b2koZHppZW4uY19zdHIoKSk7CiAgICAgICAgaWYoeDw9MjAwMCAmJiB4Pj0xOTAwICYmIHk8PTEyICYmIHk+PTEgJiYgejw9MzEgJiYgej4wKSByZXR1cm4gdHJ1ZTsKICAgICAgICBlbHNlIHJldHVybiBmYWxzZTsKCiAgICB9CiAgICB9CgoKCn0KCmludCBtYWluKCkKewogICAgc3RyaW5nIGEsYixkYXRhLHo7CgogICAgd2hpbGUoY2luPj56Pj5hPj56Pj5iPj56Pj56Pj5kYXRhKQogICAgewogICAgICAgIGludCBkbD1hLmxlbmd0aCgpOwogICAgICAgIGlmKHNwcmF3ZHooYSkgJiYgZGw8PTExKQogICAgICAgIHsKICAgICAgICAgICAgZGw9Yi5sZW5ndGgoKTsKICAgICAgICAgICAgaWYoc3ByYXdkeihiKSAmJiBkbDw9MjEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGRhdGExKGRhdGEpKSBjb3V0PDwiM1xuIjsKICAgICAgICAgICAgICAgIGVsc2UgY291dDw8IjJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBjb3V0PDwiMVxuIjsKICAgICAgICB9CiAgICAgICAgZWxzZSBjb3V0PDwiMFxuIjsKCgogICAgfQoKCiAgICByZXR1cm4gMDsKfQo=