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

const int MAXN = 100005;

int pai[MAXN];
int rnk[MAXN];

void init(int n) {
    for (int i = 1; i <= n; i++) {
        pai[i] = i;
        rnk[i] = 0;
    }
}

int find(int x) {
    if (pai[x] != x)
        pai[x] = find(pai[x]); // path compression
    return pai[x];
}

void unite(int x, int y) {
    int rx = find(x), ry = find(y);
    if (rx == ry) return;
    // union by rank
    if (rnk[rx] < rnk[ry]) swap(rx, ry);
    pai[ry] = rx;
    if (rnk[rx] == rnk[ry]) rnk[rx]++;
}

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

    int N, M;
    cin >> N >> M;

    init(N);

    for (int i = 0; i < M; i++) {
        int u, v;
        cin >> u >> v;
        unite(u, v);
    }

    int Q;
    cin >> Q;

    while (Q--) {
        int k;
        cin >> k;
        vector<int> route(k);
        for (int i = 0; i < k; i++) cin >> route[i];

        int flights = 0;
        for (int i = 0; i + 1 < k; i++) {
            if (find(route[i]) != find(route[i + 1])) {
                flights++;
            }
        }
        cout << flights << "\n";
    }

    return 0;
}
