#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<ll> vll;
#define pb push_back
#define ff first
#define ss second
const int MAXN = 1e5 + 1;
const int N = 1024 * 128;
vi graf[N];
int tree[2 * N], lazy[2 * N], ile[MAXN], podd[MAXN], skok[MAXN], pre[MAXN], par[MAXN], odz[MAXN];
int timer = 1, korzen;
void dfs(int v, int ojc){
podd[v] = 1;
if(graf[v].size() == 1) ile[v]++;
for(int u : graf[v]){
if(u == ojc) continue;
par[u] = v;
dfs(u, v);
ile[v] += ile[u];
podd[v] += podd[u];
}
}
void decompose(int v, int ojc, int pocz){
odz[timer] = v;
pre[v] = timer++;
skok[v] = pocz;
int mx = 0, ciezki = 0;
for(int u : graf[v]){
if(u == ojc) continue;
if(mx < podd[u]){
mx = podd[u]; ciezki = u;
}
}
if(ciezki) decompose(ciezki, v, pocz);
for(int u : graf[v]){
if(u == ojc || u == ciezki) continue;
decompose(u, v, u);
}
}
void push(int v, int l, int r){
if(lazy[v]){
int mid = (l + r) / 2;
int dl1 = mid - l + 1, dl2 = r - mid;
tree[2 * v] = dl1 - tree[2 * v];
tree[2 * v + 1] = dl2 - tree[2 * v + 1];
lazy[2 * v] ^= 1; lazy[2 * v + 1] ^= 1;
lazy[v] = 0;
}
}
void zmien(int v, int l, int r, int ql, int qr){
if(l > qr || r < ql || r < l) return;
if(ql <= l && r <= qr){
int dl = r - l + 1;
tree[v] = dl - tree[v];
lazy[v] ^= 1;
return;
}
push(v, l, r);
int mid = (l + r) / 2;
zmien(2 * v, l, mid, ql, qr); zmien(2 * v + 1, mid + 1, r, ql, qr);
tree[v] = tree[2 * v] + tree[2 * v + 1];
}
void upd(int v){
while(skok[v] != korzen){
zmien(1, 1, N, pre[skok[v]], pre[v]);
v = par[skok[v]];
}
if(v != korzen){
zmien(1, 1, N, 2, pre[v]);
}
}
void solve(){
int d; cin >> d;
vi t(d);
for(int i = 0; i < d; i++) cin >> t[i];
sort(t.begin(), t.end());
int utrac = 0;
vi g;
for(int i = 0; i < d; ){
int j = i;
while(j < d && t[j] == t[i]) j++;
int v = t[i];
int cnt = j - i;
if(graf[v].size() == 1){
utrac++;
if(!(cnt & 1)) g.pb(v);
}else{
if(cnt & 1) g.pb(v);
}
i = j;
}
if((d + ile[korzen] - utrac) & 1){ cout << "-1\n"; return; }
for(int u : g) upd(u);
cout << 2 * podd[korzen] - tree[1] + d - 2 << "\n";
for(int u : g) upd(u);
}
void build(int v, int l, int r){
if(l == r){
if(l == 1 && l > podd[korzen]) return;
tree[v] = ile[odz[l]] & 1;
return;
}
int mid = (l + r) / 2;
build(2 * v, l, mid); build(2 * v + 1, mid + 1, r);
tree[v] = tree[2 * v] + tree[2 * v + 1];
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, q;
cin >> n >> q;
for(int i = 1; i < n; i++){
int a, b; cin >> a >> b;
graf[a].pb(b); graf[b].pb(a);
}
for(int i = 1; i <= n; i++){
if(graf[i].size() > 1){
korzen = i; break;
}
}
dfs(korzen, 0);
decompose(korzen, 0, korzen);
build(1, 1, N);
while(q--) solve();
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgbG9uZyBkb3VibGUgbGQ7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gcGlpOwp0eXBlZGVmIHBhaXI8bGwsIGxsPiBwbGw7CnR5cGVkZWYgdmVjdG9yPGludD4gdmk7CnR5cGVkZWYgdmVjdG9yPGxsPiB2bGw7CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZmYgZmlyc3QKI2RlZmluZSBzcyBzZWNvbmQKCmNvbnN0IGludCBNQVhOID0gMWU1ICsgMTsKY29uc3QgaW50IE4gPSAxMDI0ICogMTI4OwoKdmkgZ3JhZltOXTsKaW50IHRyZWVbMiAqIE5dLCBsYXp5WzIgKiBOXSwgaWxlW01BWE5dLCBwb2RkW01BWE5dLCBza29rW01BWE5dLCBwcmVbTUFYTl0sIHBhcltNQVhOXSwgb2R6W01BWE5dOwppbnQgdGltZXIgPSAxLCBrb3J6ZW47Cgp2b2lkIGRmcyhpbnQgdiwgaW50IG9qYyl7CiAgICBwb2RkW3ZdID0gMTsKICAgIGlmKGdyYWZbdl0uc2l6ZSgpID09IDEpIGlsZVt2XSsrOwogICAgZm9yKGludCB1IDogZ3JhZlt2XSl7CiAgICAgICAgaWYodSA9PSBvamMpIGNvbnRpbnVlOwogICAgICAgIHBhclt1XSA9IHY7CiAgICAgICAgZGZzKHUsIHYpOwogICAgICAgIGlsZVt2XSArPSBpbGVbdV07CiAgICAgICAgcG9kZFt2XSArPSBwb2RkW3VdOwogICAgfQp9Cgp2b2lkIGRlY29tcG9zZShpbnQgdiwgaW50IG9qYywgaW50IHBvY3opewogICAgb2R6W3RpbWVyXSA9IHY7CiAgICBwcmVbdl0gPSB0aW1lcisrOwogICAgc2tva1t2XSA9IHBvY3o7CiAgICBpbnQgbXggPSAwLCBjaWV6a2kgPSAwOwogICAgZm9yKGludCB1IDogZ3JhZlt2XSl7CiAgICAgICAgaWYodSA9PSBvamMpIGNvbnRpbnVlOwogICAgICAgIGlmKG14IDwgcG9kZFt1XSl7CiAgICAgICAgICAgIG14ID0gcG9kZFt1XTsgY2llemtpID0gdTsKICAgICAgICB9CiAgICB9CgogICAgaWYoY2llemtpKSBkZWNvbXBvc2UoY2llemtpLCB2LCBwb2N6KTsKICAgIGZvcihpbnQgdSA6IGdyYWZbdl0pewogICAgICAgIGlmKHUgPT0gb2pjIHx8IHUgPT0gY2llemtpKSBjb250aW51ZTsKICAgICAgICBkZWNvbXBvc2UodSwgdiwgdSk7CiAgICB9Cn0KCnZvaWQgcHVzaChpbnQgdiwgaW50IGwsIGludCByKXsKICAgIGlmKGxhenlbdl0pewogICAgICAgIGludCBtaWQgPSAobCArIHIpIC8gMjsKICAgICAgICBpbnQgZGwxID0gbWlkIC0gbCArIDEsIGRsMiA9IHIgLSBtaWQ7CiAgICAgICAgdHJlZVsyICogdl0gPSBkbDEgLSB0cmVlWzIgKiB2XTsKICAgICAgICB0cmVlWzIgKiB2ICsgMV0gPSBkbDIgLSB0cmVlWzIgKiB2ICsgMV07CiAgICAgICAgbGF6eVsyICogdl0gXj0gMTsgbGF6eVsyICogdiArIDFdIF49IDE7CiAgICAgICAgbGF6eVt2XSA9IDA7CiAgICB9Cn0KCnZvaWQgem1pZW4oaW50IHYsIGludCBsLCBpbnQgciwgaW50IHFsLCBpbnQgcXIpewogICAgaWYobCA+IHFyIHx8IHIgPCBxbCB8fCByIDwgbCkgcmV0dXJuOwogICAgaWYocWwgPD0gbCAmJiByIDw9IHFyKXsKICAgICAgICBpbnQgZGwgPSByIC0gbCArIDE7CiAgICAgICAgdHJlZVt2XSA9IGRsIC0gdHJlZVt2XTsKICAgICAgICBsYXp5W3ZdIF49IDE7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHB1c2godiwgbCwgcik7CgogICAgaW50IG1pZCA9IChsICsgcikgLyAyOwogICAgem1pZW4oMiAqIHYsIGwsIG1pZCwgcWwsIHFyKTsgem1pZW4oMiAqIHYgKyAxLCBtaWQgKyAxLCByLCBxbCwgcXIpOwoKICAgIHRyZWVbdl0gPSB0cmVlWzIgKiB2XSArIHRyZWVbMiAqIHYgKyAxXTsKfQoKCnZvaWQgdXBkKGludCB2KXsKICAgIHdoaWxlKHNrb2tbdl0gIT0ga29yemVuKXsKICAgICAgICB6bWllbigxLCAxLCBOLCBwcmVbc2tva1t2XV0sIHByZVt2XSk7CiAgICAgICAgdiA9IHBhcltza29rW3ZdXTsKICAgIH0KICAgIGlmKHYgIT0ga29yemVuKXsKICAgICAgICB6bWllbigxLCAxLCBOLCAyLCBwcmVbdl0pOwogICAgfQp9Cgp2b2lkIHNvbHZlKCl7CiAgICBpbnQgZDsgY2luID4+IGQ7CiAgICB2aSB0KGQpOwogICAgZm9yKGludCBpID0gMDsgaSA8IGQ7IGkrKykgY2luID4+IHRbaV07CiAgICBzb3J0KHQuYmVnaW4oKSwgdC5lbmQoKSk7CiAgICBpbnQgdXRyYWMgPSAwOwogICAgdmkgZzsKCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgZDsgKXsKICAgICAgICBpbnQgaiA9IGk7CiAgICAgICAgd2hpbGUoaiA8IGQgJiYgdFtqXSA9PSB0W2ldKSBqKys7CiAgICAgICAgaW50IHYgPSB0W2ldOwogICAgICAgIGludCBjbnQgPSBqIC0gaTsKCiAgICAgICAgaWYoZ3JhZlt2XS5zaXplKCkgPT0gMSl7CiAgICAgICAgICAgIHV0cmFjKys7CiAgICAgICAgICAgIGlmKCEoY250ICYgMSkpIGcucGIodik7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGlmKGNudCAmIDEpIGcucGIodik7CiAgICAgICAgfQogICAgICAgIGkgPSBqOwogICAgfQoKICAgIGlmKChkICsgaWxlW2tvcnplbl0gLSB1dHJhYykgJiAxKXsgY291dCA8PCAiLTFcbiI7IHJldHVybjsgfQoKICAgIGZvcihpbnQgdSA6IGcpIHVwZCh1KTsKICAgIGNvdXQgPDwgMiAqIHBvZGRba29yemVuXSAtIHRyZWVbMV0gKyBkIC0gMiA8PCAiXG4iOwogICAgZm9yKGludCB1IDogZykgdXBkKHUpOwp9Cgp2b2lkIGJ1aWxkKGludCB2LCBpbnQgbCwgaW50IHIpewogICAgaWYobCA9PSByKXsKICAgICAgICBpZihsID09IDEgJiYgbCA+IHBvZGRba29yemVuXSkgcmV0dXJuOwogICAgICAgIHRyZWVbdl0gPSBpbGVbb2R6W2xdXSAmIDE7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZCA9IChsICsgcikgLyAyOwogICAgYnVpbGQoMiAqIHYsIGwsIG1pZCk7IGJ1aWxkKDIgKiB2ICsgMSwgbWlkICsgMSwgcik7CgogICAgdHJlZVt2XSA9IHRyZWVbMiAqIHZdICsgdHJlZVsyICogdiArIDFdOwp9CgppbnQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CgogICAgaW50IG4sIHE7CiAgICBjaW4gPj4gbiA+PiBxOwoKICAgIGZvcihpbnQgaSA9IDE7IGkgPCBuOyBpKyspewogICAgICAgIGludCBhLCBiOyBjaW4gPj4gYSA+PiBiOwogICAgICAgIGdyYWZbYV0ucGIoYik7IGdyYWZbYl0ucGIoYSk7CiAgICB9CgogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICAgIGlmKGdyYWZbaV0uc2l6ZSgpID4gMSl7CiAgICAgICAgICAgIGtvcnplbiA9IGk7IGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgICBkZnMoa29yemVuLCAwKTsKICAgIGRlY29tcG9zZShrb3J6ZW4sIDAsIGtvcnplbik7CiAgICBidWlsZCgxLCAxLCBOKTsKCiAgICB3aGlsZShxLS0pIHNvbHZlKCk7CgoKCgoKICAgIHJldHVybiAwOwp9Cgo=