#include <iostream>
using namespace std;
#include<vector>
#include<algorithm>


struct Interval {
    long long l,r;
    Interval(long long l=0,long long r = 0):l(l),r(r){}
};
long long getMaxIntersection(Interval a,Interval b){
    long long interl = max(a.l,b.l);
    long long interR = min(a.r,b.r);
    if(interl>interR){
        return -1;
    }
    return interR;
}
int main() {
   long long l1,r1,l2,r2,l3,r3;
   cin>>l1>>r1>>l2>>r2>>l3>>r3;
   vector<Interval>intervals={
    Interval(l1,r1),
    Interval(l2,r2),
    Interval(l3,r3)
   };
   long long maxSum=-1;
   for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            if(i==j){
                continue;
            }
            long long val1=getMaxIntersection(intervals[i], intervals[j]);
            if(val1==-1){
                continue;
            }
            long long val2=getMaxIntersection(intervals[j], intervals[i]);
            if(val2==-1){
                continue;
            }
            long long currentSum = val1+val2;
            if(currentSum>maxSum){
                maxSum=currentSum;
            }
        }

   }
   cout<<maxSum<<endl;
   return 0;
}
// 64 位输出请用 printf("%lld")