#include<bits/stdc++.h>
using namespace std;

typedef pair<int,int> P;

int get(int h,int m){
  return h * 60 + m;
}

int K,N,M;
int A[111],B[111];
vector<P> st[111];
vector<P> tt[111];
int main(){

  scanf("%d",&K);
  for(int i=0;i<K;i++){
    int ah,am,bh,bm;
    scanf("%d:%d-%d:%d",&ah,&am,&bh,&bm);
    A[i] = get(ah,am);
    B[i] = get(bh,bm);
  }

  scanf("%d",&N);
  for(int i=0;i<N;i++){
    int k;
    scanf("%d",&k);
    for(int j=0;j<k;j++){
      int ah,am,bh,bm;
      scanf("%d:%d-%d:%d",&ah,&am,&bh,&bm);
      int s = get(ah,am);
      int t = get(bh,bm);
      st[i].push_back( P(s, t) );
    }
  }


  scanf("%d",&M);
  for(int i=0;i<M;i++){
    int k;
    scanf("%d",&k);
    for(int j=0;j<k;j++){
      int ah,am,bh,bm;
      scanf("%d:%d-%d:%d",&ah,&am,&bh,&bm);
      int s = get(ah,am);
      int t = get(bh,bm);
      tt[i].push_back( P(s,t) );
    }
  }

  int res = 0;
  for(int i=0;i<K;i++){
    int am,bm;
    am = bm = 0;
    for(int j=0;j<N;j++){
      for(int k=0;k<(int)st[j].size();k++){
	if( st[j][k].first <= A[i] && B[i] <= st[j][k].second ) {
	  am++; break;
	}
      }
    }
    for(int j=0;j<M;j++){
      for(int k=0;k<(int)tt[j].size();k++){
	if( tt[j][k].first <= A[i] && B[i] <= tt[j][k].second ) {
	  bm++; break;
	}
      }
    }

    res += min(am,bm);
  }
  cout << res << endl;
}