#include <bits/stdc++.h>
int link[300000], next[300000], e[300000], top, f[10000];
void connect(int t, int w) {
  top++;
  e[top] = w;
  next[top] = link[t];
  link[t] = top;
}
int main() {
  int n, m1, m2, num[10000], b[10000], i, t, w, t2, p;
  scanf("%d", &n);
  scanf("%d", &m1);
  for (i = 0; i < m1; i++) {
    scanf("%d%d", &t, &w);
    connect(t, w);
    connect(w, t);
  }
  t2 = 0;
  for (i = 1; i <= n; i++)
    if (!f[i]) {
      t = 0;
      w = 1;
      b[1] = i;
      t2++;
      f[i] = t2;
      while (w > t) {
        t++;
        p = link[b[t]];
        while (p) {
          if (!f[e[p]]) {
            f[e[p]] = t2;
            w++;
            b[w] = e[p];
          }
          p = next[p];
        }
      }
      num[t2] = w;
    }
  scanf("%d", &m2);
  for (i = 0; i < m2; i++) {
    scanf("%d%d", &t, &w);
    if (f[t] == f[w]) num[f[t]] = 0;
  }
  for (i = 2; i <= t2; i++)
    if (num[i] > num[1]) num[1] = num[i];
  printf("%d", num[1]);
  return 0;
}
