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

int N, M;
vector<int> adj[100005];
int comp[100005];
bool visited[100005];

void bfs(int start, int c) {
    queue<int> q;
    q.push(start);
    visited[start] = true;
    comp[start] = c;
    while (!q.empty()) {
        int u = q.front();
        q.pop();
        for (int v : adj[u]) {
            if (!visited[v]) {
                visited[v] = true;
                comp[v] = c;
                q.push(v);
            }
        }
    }
}

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

    cin >> N >> M;

    for (int i = 0; i < M; i++) {
        int u, v;
        cin >> u >> v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }

    int numComp = 0;
    for (int i = 1; i <= N; i++) {
        if (!visited[i]) {
            bfs(i, numComp);
            numComp++;
        }
    }

    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 (comp[route[i]] != comp[route[i + 1]]) {
                flights++;
            }
        }
        cout << flights << "\n";
    }

    return 0;
}
