#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 7;
const long long mod = 998244353;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
int n, s, d;
unsigned long long ok[N];
unsigned long long d1[(1 << 20)], d2[(1 << 10)], a[N];
unordered_map<unsigned long long, int> m;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  for (int i = 0; i < N; i++) ok[i] = rng();
  cin >> n >> s >> d;
  for (int i = 0; i < s; i++) {
    int len;
    cin >> len;
    for (int j = 1; j <= len; j++) {
      int x;
      cin >> x;
      a[i] ^= ok[x];
    }
  }
  int c = min(20, s);
  for (int i = 0; i < c; i++) {
    for (int j = 0; j < (1 << i); j++) {
      d1[(1 << i) + j] = (d1[j] ^ a[i]);
    }
  }
  for (int i = 0; i < s - c; i++) {
    for (int j = 0; j < (1 << i); j++) {
      d2[j + (1 << i)] = (d2[j] ^ a[i + c]);
    }
  }
  for (int i = 0; i < (1 << c); i++) {
    unsigned long long res = d1[i];
    if (m.find(res) == m.end()) {
      m[res] = __builtin_popcount(i);
    } else {
      m[res] = min(m[res], __builtin_popcount(i));
    }
  }
  for (int i = 1; i <= d; i++) {
    int len;
    cin >> len;
    unsigned long long a = 0;
    for (int j = 1; j <= len; j++) {
      int x;
      cin >> x;
      a ^= ok[x];
    }
    int ans = 1e9;
    for (int j = 0; j < (1 << s - c); j++) {
      auto c = (a ^ d2[j]);
      if (m.find(c) != m.end()) {
        ans = min(ans, m[c] + __builtin_popcount(j));
      }
    }
    cout << (ans == 1e9 ? -1 : ans) << "\n";
  }
}
