#include <stdio.h>
#include <algorithm>
#include <vector>

using namespace std;

int a[110];
int b[110];
int c[110];
int d[110];
int n,m,k;
int ans=0;
int s[110];
int p[110];

void f(int x)
{
    if(x==k)
    {
        for(int i=1;i<=n;i++) p[i]=0;
        for(int i=1;i<=k;i++)
        {
            if(s[i-1]==0) p[c[i]]=1;
            else p[d[i]]=1;
        }
        int cnt=0;
        for(int i=1;i<=m;i++)
        {
            if(p[a[i]]==1&&p[b[i]]==1) cnt++;
        }
        ans=max(ans,cnt);
        return;
    }
    s[x]=0;
    f(x+1);
    s[x]=1;
    f(x+1);
    return;
}

int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d",&a[i],&b[i]);
    }
    scanf("%d",&k);
    for(int i=1;i<=k;i++)
    {
        scanf("%d%d",&c[i],&d[i]);
    }
    f(0);
    printf("%d",ans);
    return 0;
}

#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
// #define int long long

template <class T>
bool INRANGE(T x, T a, T b) { return a <= x && x <= b; }
template <class T>
inline bool chmin(T &a, T b)
{
    if (a > b)
    {
        a = b;
        return true;
    }
    return false;
}
template <class T>
inline bool chmax(T &a, T b)
{
    if (a < b)
    {
        a = b;
        return true;
    }
    return false;
}

#define REP(i, n) for (int i = 0; i < (n); ++i)
#define RREP(i, n) for (int i = (n); i >= 0; --i)
#define FOR(i, a, b) for (int i = (a); i < (b); ++i)
#define RFOR(i, a, b) for (int i = (a); i >= (b); --i)
#define ALL(v) (v).begin(), (v).end()
#define RALL(a) (a).rbegin(), (a).rend()
#define debug(x) cerr << #x << " = " << (x) << " (L" << __LINE__ << ")" \
                      << " " << __FILE__ << endl;

typedef vector<int> vi;
typedef vector<string> vs;
typedef vector<vi> vvi;
typedef pair<int, int> pii;

int main()
{
    cin.tie(0);
    ios::sync_with_stdio(false);

    int N, M;
    cin >> N >> M;
    vi a(M), b(M);
    REP(i, M) {
        cin >> a[i] >> b[i];
        a[i]--, b[i]--;
    }
    int K;
    cin >> K;
    vi c(K), d(K);
    REP(i, K) {
        cin >> c[i] >> d[i];
        c[i]--, d[i]--; 
    }

    int ans = 0;
    for (int bit = 0; bit < (1<<K); ++bit)
    {
        vector<bool> S(N, false);
        REP(i, K) 
            if (bit & (1<<i)) {
                S[c[i]] = true;
            } else {
                S[d[i]] = true;
            }

        int cnt = 0;
        REP(i, M) {
            if (S[a[i]] and S[b[i]]) cnt++;
        }

        ans = max(ans, cnt);
    }

    cout << ans << endl;
    return 0;
}
