#include <iostream>
using namespace std;
int day[]={
0,31,28,31,30,31,30,31,31,30,31,30,31
};
int Get_YearMonthDay(int year, int month)
{
int ret_day = day[month];
(month==2) && (year%4==0 && year%100!=0 ||year%400==0)
&& (ret_day++);
return ret_day;
}
class Date{
public:
Date(int year=0,int month=0,int day=0):
_year(year),_month(month),_day(day){
}
// >操作符重载
bool operator>(const Date& d)
{
if(_year > d._year)
return true;
else if(_year < d._year)
return false;
else{
if(_month>d._month)
return true;
else if(_month < d._month)
return false;
else{
if(_day>d._day)
return true;
else
return false;
}
}
}
//日期-天数,返回新的日期
Date operator-(int day)
{
Date temp(*this);
temp._day -= day;
while(temp._day<1)
{
temp._month = temp._month==1? 12 : temp._month-1;
if(temp._month ==12)
temp._year--;
temp._day += Get_YearMonthDay(temp._year,temp._month);
}
return temp;
}
int operator-(Date& d)//日期-日期,返回天数差(同一天返回1)
{
//由于不知道-左右操作数那个日期大,那个日期小,所以又重载了>操作符
Date* max,* min;
max = (*this) > d ? this : (&d);//max指针抓大的日期
min = max==this ? (&d) : this;//min抓小
int day = 0;
while((*max)-day > (*min))
{
day++;
}
return day+1;
}
private:
int _year;
int _month;
int _day;
};
int main() {
int a, b;
while (cin >> a >> b) { // 注意 while 处理多个 case
int year1=a/10000,
year2=b/10000,
month1=(a/100)%100,
month2=(b/100)%100,
day1=a%100,
day2=b%100;
Date A(year1,month1,day1);
Date B(year2,month2,day2);
cout<<A-B;
}
}
// 64 位输出请用 printf("%lld")