#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
P s2p(string s){
  return P(stoi(s.substr(0,2)),stoi(s.substr(3,2)));
}
bool contain(string c,string p){
  P stc=s2p(c.substr(0,5));
  P enc=s2p(c.substr(6,5));
  P stp=s2p(p.substr(0,5));
  P enp=s2p(p.substr(6,5));
  //cout<<stc.first<<" "<<stc.second<<endl;
  //cout<<enc.first<<" "<<enc.second<<endl;
  //cout<<stp.first<<" "<<stp.second<<endl;
  //cout<<enp.first<<" "<<enp.second<<endl;
  return stp<=stc&&enc<=enp;
}
int main(){
  int k,n,m;
  cin>>k;
  string c[k];
  for(int i=0;i<k;i++) cin>>c[i];
  cin>>n;
  vector<string> t[n];
  for(int i=0,j;i<n;i++){
    string tmp;
    cin>>j;
    for(int a=0;a<j;a++){
      cin>>tmp;
      t[i].push_back(tmp);
    }
  }
  cin>>m;
  vector<string> s[m];
  for(int i=0,j;i<m;i++){
    string tmp;
    cin>>j;
    for(int a=0;a<j;a++){
      cin>>tmp;
      s[i].push_back(tmp);
    }
  }
  int ans=0;
  for(int i=0;i<k;i++){
    int a=0,b=0;
    for(int l=0;l<n;l++){
      bool f=0;
      for(int j=0;j<(int)t[l].size();j++){
	f|=contain(c[i],t[l][j]);
      }
      if(f) a++;
    }
    for(int l=0;l<m;l++){
      bool f=0;
      for(int j=0;j<(int)s[l].size();j++){
	f|=contain(c[i],s[l][j]);
      }
      if(f) b++;
    }
    //cout<<a<<" "<<b<<endl;
    ans+=min(a,b);
  }
  cout<<ans<<endl;
  return 0;
}