import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt(); // 起始日期
int b = scanner.nextInt(); // 终止日期
scanner.close();
int count = 0;
// 遍历所有可能的回文日期
// 8位回文日期的特点:前4位与后4位对称,如20211202
// 因此只需遍历前4位,后4位由前4位反转得到
int startYear = a / 10000;
int endYear = b / 10000;
for (int year = startYear; year <= endYear; year++) {
// 生成回文日期
int palindromeDate = generatePalindromeDate(year);
// 检查是否在区间内
if (palindromeDate >= a && palindromeDate <= b) {
// 检查日期是否合法
if (isValidDate(palindromeDate)) {
count++;
}
}
}
System.out.println(count);
}
/**
* 根据年份生成可能的回文日期
* 例如:年份2021,生成回文日期20211202
*/
private static int generatePalindromeDate(int year) {
// 将年份转为字符串
String yearStr = String.format("%04d", year);
// 反转年份字符串得到日期部分
String reversedYear = new StringBuilder(yearStr).reverse().toString();
// 组合成8位回文日期
return Integer.parseInt(yearStr + reversedYear);
}
/**
* 检查日期是否合法
*/
private static boolean isValidDate(int date) {
// 解析年、月、日
int year = date / 10000;
int month = (date % 10000) / 100;
int day = date % 100;
// 检查月份合法性
if (month < 1 || month > 12) {
return false;
}
// 检查日期合法性
if (day < 1) {
return false;
}
// 大月有31天
if (month == 1 || month == 3 || month == 5 || month == 7
|| month == 8 || month == 10 || month == 12) {
return day <= 31;
}
// 小月有30天
else if (month == 4 || month == 6 || month == 9 || month == 11) {
return day <= 30;
}
// 2月,考虑闰年
else { // month == 2
if (isLeapYear(year)) {
return day <= 29;
} else {
return day <= 28;
}
}
}
/**
* 判断是否为闰年
* 能被4整除但不能被100整除,或能被400整除的年份是闰年
*/
private static boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
}