技巧:
    枚举 - 缩小规模
思路:
    将所有可能的月份和日排列组合然后翻转 看翻转后的值是否在给定的日期范围内。
实现:
package main

import (
	"fmt"
	"strconv"
)

func main() {
	var begin, end string
	fmt.Scan(&begin, &end)
    // 开始年份 int
	beginYearInt, _ := strconv.Atoi(begin[:4])
    // 结束年份 int
	endYearInt, _ := strconv.Atoi(end[:4])
    // 每月有几天
	monthDays := []int{-1, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}

	ans := 0
    
    // 枚举月和日的组合
	for i := 1; i <= 12; i++ {
		monthStr := ""
		if i < 10 {
			monthStr = "0"
		} 
        monthStr = fmt.Sprintf("%s%d", monthStr, i)
		for j := 1; j <= monthDays[i]; j++ {
			dayStr := ""
			if j < 10 {
				dayStr = "0"
			} 
            dayStr = fmt.Sprintf("%s%d", dayStr, j)
            
			// 将月和日字符串拼接然后回文
			surffix := []byte(monthStr + dayStr)
			for k := 0; k < 2; k++ {
				surffix[k], surffix[3-k] = surffix[3-k], surffix[k]
			}
            
            //获取回文后的年份并判断是否在给定年份范围内
			year, _ := strconv.Atoi(string(surffix))
			if year >= beginYearInt && year <= endYearInt {
                // 排除闰年
				if year%4 == 0 && year%100 != 0 && year%400 == 0 && i == 2 && j > 28 {
					continue
				}
				ans++
			}
		}
	}
	fmt.Println(ans)
}