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

ll nCk(ll a, ll b)
{
    ll ret = 1;
    if (a < 0 || a < b)
        return 0;
    for (int i = 1; i <= b; i++)
    {
        ret = ret * (a + 1 - i) / i;
    }
    return ret;
}

int dp(int A, int B, long long K, string &res)
{
    if (A == 0 && B == 0)
    {
        return 0;
    }
    else if (A != 0 && B == 0)
    {
        res += "a";
        A--;
        dp(A, 0, K, res);
        return 0;
    }
    else if (A == 0 && B != 0)
    {
        res += "b";
        B--;
        dp(0, B, K, res);
        return 0;
    }
    else if (K <= nCk(A + B - 1, B))
    {
        res += "a";
        A--;
        dp(A, B, K, res);
        return 0;
    }
    else
    {
        res += "b";
        K -= nCk(A + B - 1, B);
        B--;
        dp(A, B, K, res);
        return 0;
    }
}

string result(int &A, int &B, long long &K, string &res)
{
    while (A || B)
    {
        // if (A != 0 && B == 0)
        // {
        //     res += "a";
        //     // putchar('a');
        //     A--;
        // }
        // else if (A == 0 && B != 0)
        // {
        //     res += "b";
        //     // putchar('b');
        //     B--;
        // }
        if (A && K <= nCk(A + B - 1, A - 1))
        {
            res += "a";
            // putchar('a');
            A--;
        }
        else
        {
            res += "b";
            // putchar('b');
            K -= nCk(A + B - 1, A - 1);
            B--;
        }
    }
    return res;
}

int main()
{
    int A;
    int B;
    long long K;
    cin >> A >> B >> K;

    string res = "";
    // result(A, B, K, res);
    // cout << result(A, B, K, res) << endl;
    dp(A, B, K, res);
    cout << res << endl;
}

// int main()
// {
//     ll A, B, K;
//     cin >> A >> B >> K;
//     while (A || B)
//     {
//         if (A && K <= nCk(A + B - 1, A - 1))
//         {
//             putchar('a');
//             A--;
//         }
//         else
//         {
//             K -= nCk(A + B - 1, A - 1);
//             putchar('b');
//             B--;
//         }
//     }
// }
#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for (int i=(0);(i)<(int)(n);++(i))
using ll = long long;
using P = pair<int, int>;
using namespace std;

#define INF ((1<<30)-1)
#define LLINF (1LL<<60)
#define EPS (1e-10)

int main() {
    int N, M;
    cin >> N >> M;

    vector<int> A(M), B(M);
    rep(i, M) cin >> A[i] >> B[i];

    int K;
    cin >> K;
    vector<int> C(K), D(K);
    rep(i, K) cin >> C[i] >> D[i];

    int ans = 0;
    for (int bit = 0; bit < (1 << K); ++bit) {
        map<int, int> mp;
        rep(i, K) {
            if ((bit >> i) & 1) {
                mp[C[i]]++;
            }
            else {
                mp[D[i]]++;
            }
        }

        int tmp = 0;
        rep(i, M) {
            if (mp[A[i]] > 0 and mp[B[i]] > 0) tmp++;
        }
        ans = max(ans, tmp);
    }
    cout << ans << endl;
}
