//回文日期
//思路:月和日是有限的,已知月日推年份,枚举第一天到第366天,转化为月日形式,再去推年份,然后合并起来变成整数存起来排序
#include <bits/stdc++.h>
using namespace std;
int calendar[400];//打表
int reserve(int x)//将一个数颠倒,因为这里的数字范围是1~31,用switch
{
switch (x)
{
case 1:return 10;break;
case 2:return 20;break;
case 3:return 30;break;
case 4:return 40;break;
case 5:return 50;break;
case 6:return 60;break;
case 7:return 70;break;
case 8:return 80;break;
case 9:return 90;break;
default:return x%10*10+x/10;
}
}
void transform(int x)//将第x天转化为对应的年月日,然后存在数组calendar中
{
int m,d,year;//日,月
if(x>0&&x<=31) m=1;//先转化月
else if(x>31&&x<=60) m=2;
else if(x>60&&x<=91) m=3;
else if(x>91&&x<=121) m=4;
else if(x>121&&x<=152) m=5;
else if(x>152&&x<=182) m=6;
else if(x>182&&x<=213) m=7;
else if(x>213&&x<=244) m=8;
else if(x>244&&x<=274) m=9;
else if(x>274&&x<=305) m=10;
else if(x>305&&x<=335) m=11;
else if(x>335&&x<=366)m=12;
switch (m)
{
case 1:d=x;break;
case 2:d=x-31;break;
case 3:d=x-31-29;break;
case 4:d=x-31-29-31;break;
case 5:d=x-31-29-31-30;break;
case 6:d=x-31-29-31-30-31;break;
case 7:d=x-31-29-31-30-31-30;break;
case 8:d=x-31-29-31-30-31-30-31;break;
case 9:d=x-31-29-31-30-31-30-31-31;break;
case 10:d=x-31-29-31-30-31-30-31-31-30;break;
case 11:d=x-31-29-31-30-31-30-31-31-30-31;break;
case 12:d=x-31-29-31-30-31-30-31-31-30-31-30;break;
}
calendar[x]=reserve(d)*1000000+reserve(m)*10000+m*100+d;
}
bool cmp(int x,int y)
{
return x<y;
}
int main()//定义转化天数为日期的函数
{
int n,x,i,y;
cin>>x>>y;//输入开始和截止日期
for(i=1;i<=366;i++)
{
transform(i);//把每一天都转化为对应的年月日
}
sort(calendar+1,calendar+366+1,cmp);//对枚举出来的回文日期进行排序
int p,q;//标记开始和截止日期,定义前后指针,对回文日期数组检索
int flag1=0,flag2=0;//指针是否移动到对应位置了
for(i=1;i<=366;i++)
{
if(x<=calendar[i]&&!flag1) {flag1=1;p=i;}
if(y<calendar[i]&&!flag2) {flag2=1;q=i;}
}
if(!flag1) {cout<<"0"<<endl;return 0;}//若前指针移到最后还找不到,说明没有回文日期
else if(!flag2) q=367;//若后指针移到最后一个回文日期外,将后指针移到最后一个回文日期上
cout<<q-p<<endl;//输出区间的回文日期数量
}