func_code_string: #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 ;     }   }   