#include <iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<map>
#include<set>
#include<stack>
#include<queue>
#include<math.h>
using namespace std;
typedef long long ll;
#define int long long
typedef vector<int> VI;
typedef pair<int, int> pii;
#define fore(i,a) for(auto &i:a)
#define REP(i,n) for(int i=0;i<n;i++)
#define eREP(i,n) for(int i=0;i<=n;i++)
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define eFOR(i,a,b) for(int i=(a);i<=(b);++i)
#define SORT(c) sort((c).begin(),(c).end())
#define rSORT(c) sort((c).rbegin(),(c).rend())
#define LB(x,a) lower_bound((x).begin(),(x).end(),(a))
#define UB(x,a) upper_bound((x).begin(),(x).end(),(a))
#define INF 1000000000
#define LLINF 9223372036854775807
#define mod 1000000007
//vector<vector<int> > dp;
//vector<vector<vector<int> > > vvvi;
//dp=vector<vector<int> >(N, vector<int>(M,0));
//vector<pair<int,int> > v;
//v.push_back(make_pair(x,y));
//priority_queue<int,vector<int>, greater<int> > q2;



signed main(){
cin.tie(0);
ios::sync_with_stdio(false);

	int y1, m1, d1, y2, m2, d2;
	cin >> y1 >> m1 >> d1 >> y2 >> m2 >> d2;

	if (y1 == y2) {
		if (m2 < m1) {
			swap(m2, m1);
			swap(d1, d2);
		}
		if (m2 == m1) {
			if (d2 < d1)swap(d2, d1);
		}
	}
	if (y1 > y2) {
		swap(y1, y2);
		swap(m2, m1);
		swap(d1, d2);
	}

	int ans = 0, ageA = 0, ageB = 0;
	eFOR(i, y1, y2 + 6) {
		eFOR(j, 1, 12) {
			int k;
			if (j == 2) {
				k = 28;
				if (i % 4 == 0 && i % 100 != 0)k++;
				else if (i % 400 == 0)k++;
			}
			if (j == 4 || j == 6 || j == 9 || j == 11)k = 30;
			else k = 31;

			eFOR(d, 1, k) {
				if (j == m1 && d == d1 && i>=y1) {
					ageA++;
				}
				if (j == m2 && d == d2 && i>=y2) {
					ageB++;
				}
				if (m1 == 2 && d1 == 29 && k == 28 && j == 3 && d == 1 && i >= y1) {
					ageA++;
				}
				if (m2 == 2 && d2 == 29 && k != 29 && j == 3 && d == 1 && i >= y2)ageB++;

				ans = max(ans, abs(ageA - ageB));
			}
		}
	}
	cout << ans << endl;

	return 0;
}


