#include <cstddef>
#include <iostream>
#include <string>
using namespace std;
// 从 a 到 b, 两边闭区间
int main() {
string s1, s2;
cin >> s1 >> s2;
string y1 = s1.substr(0, 4);// 0是开始位置, 4是取多少长度
string y2 = s2.substr(0, 4);
string m1 = s1.substr(4, 2);
string m2 = s2.substr(4, 2);
string d1 = s1.substr(6, 2);
string d2 = s2.substr(6, 2);
int yy1 = stoi(y1);// 将字符串去掉双引号变成整型
int yy2 = stoi(y2);
int mm1 = stoi(m1);
int mm2 = stoi(m2);
int dd1 = stoi(d1);
int dd2 = stoi(d2);
// cout << yy1 << " " << mm1 << " " << dd1 << " " << yy2 << " " << mm2 << " " << dd2 << '\n';
int cnt = 0; // 统计出现的回文数次数
//接下来是从 y1 到 y2 的两闭区间,我要先得到这个年份的回文数月和日,然后分别判断月和日是否合法;判断完是合法后,我还要再判断这个合法日期是否位于双闭区间内
for (int i = yy1; i <= yy2; i++) {
string yy = to_string(i);
string dd = string("") + yy[1] + yy[0]; //2016 -> 02
string mm = string("") + yy[3] + yy[2]; // 61
int d = stoi(dd);
int m = stoi(mm);
// cout << i << " " << m << " " << d << '\n';
//判断合法性:
if (m > 12 || m <= 0) {// 13非法,0非法
continue;
}
if (d > 31 || d <= 0) {// 32非法,0非法
continue;
}
if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0)) {// 闰年
if (d == 31) {
if (m == 2 || m == 4 || m == 6 || m == 9 || m == 11) {
continue;
}
}
else if (d == 30) {
if (m == 2) {
continue;
}
}// 剩下的都是d < 30的,都是合法
}
else {// 平年
if (d == 31) {
if (m == 2 || m == 4 || m == 6 || m == 9 || m == 11) {
continue;
}
}
else if (d == 30 || d == 29) {
if (m == 2) {
continue;
}
}
// 剩下的都是d < 29的,都是合法
}
// 判断是否在范围内 2025 02 21 -- 2026 07 11
if (i == yy1) {
if (m < mm1) {
continue;
}
else if(m == mm1){
if (d < dd1) {
continue;
}
}
}
else if (i == yy2) {
if (m > mm2) {
continue;
}
else if(m == mm2){
if (d > dd2) {
continue;
}
}
}
cnt++;
// cout << cnt << '\n';
}
cout << cnt;
}
