#include <bits/stdc++.h>
using namespace std;
bool mm[1005];
vector<pair<int, int> > vv, uu;
int main() {
  memset(mm, false, sizeof(mm));
  int p, q, l, r;
  scanf("%d%d%d%d", &p, &q, &l, &r);
  while (p--) {
    int a, b;
    scanf("%d%d", &a, &b);
    uu.push_back({a, b});
  }
  while (q--) {
    int c, d;
    scanf("%d%d", &c, &d);
    vv.push_back({c, d});
  }
  int ans = 0;
  for (int i = l; i <= r; i++) {
    for (int j = 0; j < vv.size(); j++) {
      for (int k = 0; k < uu.size(); k++) {
        if (vv[j].first + i <= uu[k].first && uu[k].first <= vv[j].second + i) {
          ans++;
          goto x;
        }
        if (vv[j].first + i <= uu[k].second &&
            uu[k].second <= vv[j].second + i) {
          ans++;
          goto x;
        }
        if (vv[j].first + i >= uu[k].first &&
            vv[j].second + i <= uu[k].second) {
          ans++;
          goto x;
        }
      }
    }
  x:
    int d = 1;
  }
  printf("%d\n", ans);
  return 0;
}
