#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const long long BIG = 1446803456761533460;
const int Big = 336860180;
stringstream sss;
const int maxn = 100010;
const int maxnlg = 17;
int n, Q;
int st[maxn], ft[maxn], pars[maxnlg][maxn];
vector<int> g[maxn], subt[maxn], vert;
int lt[maxn];
bool imp[maxn];
int dp[maxn][2];
int tim = 0;
void dfs_lca(int x, int par) {
  st[x] = tim++;
  pars[0][x] = par;
  for (int i = (0); i < (maxnlg - 1); ++i) pars[i + 1][x] = pars[i][pars[i][x]];
  for (auto y : g[x]) {
    if (y != par) dfs_lca(y, x);
  }
  ft[x] = tim;
}
int LCA(int a, int b) {
  if (st[a] > st[b]) swap(a, b);
  if (ft[a] >= ft[b]) return a;
  for (int i = (maxnlg)-1; i >= (0); --i) {
    if (ft[pars[i][a]] < ft[b]) a = pars[i][a];
  }
  return pars[0][a];
}
bool st_cmp(int a, int b) { return st[a] < st[b]; }
void dfs_dp(int x) {
  int s0 = 0, s1 = 0;
  for (auto y : subt[x]) {
    dfs_dp(y);
    s0 += dp[y][0];
    s1 += dp[y][1];
  }
  if (imp[x]) {
    dp[x][0] = n;
    dp[x][1] = s0;
  } else {
    dp[x][0] = min(s1 + 1, s0);
    dp[x][1] = dp[x][0];
    for (auto y : subt[x]) {
      dp[x][1] = min(dp[x][1], (s0 - dp[y][0] + dp[y][1]));
    }
  }
}
void MAIN() {
  cin >> n;
  for (int i = (0); i < (n - 1); ++i) {
    int a, b;
    cin >> a >> b;
    g[a].emplace_back(b), g[b].emplace_back(a);
  }
  g[0].emplace_back(1);
  dfs_lca(0, 0);
  cin >> Q;
  for (int q = (0); q < (Q); ++q) {
    int k;
    cin >> k;
    for (int i = (0); i < (k); ++i) {
      int a;
      cin >> a;
      vert.emplace_back(a);
      imp[a] = true;
    }
    for (int i = (0); i < (k); ++i) vert.emplace_back(pars[0][vert[i]]);
    sort((vert).begin(), (vert).end(), st_cmp);
    for (int i = (0); i < (k * 2 - 1); ++i)
      vert.emplace_back(LCA(vert[i], vert[i + 1]));
    vert.emplace_back(0);
    sort((vert).begin(), (vert).end(), st_cmp);
    vert.resize(unique((vert).begin(), (vert).end()) - vert.begin());
    for (int i = (1); i < (vert.size()); ++i) {
      lt[i] = i - 1;
      while (ft[vert[lt[i]]] < ft[vert[i]]) lt[i] = lt[lt[i]];
      subt[vert[lt[i]]].emplace_back(vert[i]);
    }
    dfs_dp(0);
    cout << (dp[0][1] >= n ? -1 : dp[0][1]) << '\n';
    for (auto v : vert) imp[v] = false, subt[v].clear();
    vert.clear();
  }
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cout << fixed << setprecision(10);
  sss << R"(
    )";
  MAIN();
  return 0;
}
