#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9 + 7;
struct Droga {
int cel;
int czas;
int potwory;
};
struct Stan {
int czas;
int w;
int miecze;
bool operator>(const Stan& inny) const {
return czas > inny.czas;
}
};
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, m, p, k;
if (!(cin >> n >> m >> p >> k)) return 0;
vector<int> kowal(n + 1, 0);
for (int i = 0; i < k; ++i) {
int w, q;
cin >> w >> q;
int maska = 0;
for (int j = 0; j < q; ++j) {
int r;
cin >> r;
maska |= (1 << (r - 1));
}
kowal[w] |= maska;
}
vector<vector<Droga>> graf(n + 1);
for (int i = 0; i < m; ++i) {
int v, w, t, s;
cin >> v >> w >> t >> s;
int maska_potworow = 0;
for (int j = 0; j < s; ++j) {
int u;
cin >> u;
maska_potworow |= (1 << (u - 1));
}
graf[v].push_back({w, t, maska_potworow});
graf[w].push_back({v, t, maska_potworow});
}
vector<vector<int>> odl(n + 1, vector<int>(1 << p, INF));
priority_queue<Stan, vector<Stan>, greater<Stan>> kolejka;
int start_miecze = kowal[1];
odl[1][start_miecze] = 0;
kolejka.push({0, 1, start_miecze});
int wynik = -1;
while (!kolejka.empty()) {
Stan akt = kolejka.top();
kolejka.pop();
if (akt.czas > odl[akt.w][akt.miecze]) continue;
if (akt.w == n) {
wynik = akt.czas;
break;
}
for (auto& krawedz : graf[akt.w]) {
if ((akt.miecze & krawedz.potwory) == krawedz.potwory) {
int nowe_miecze = akt.miecze | kowal[krawedz.cel];
if (akt.czas + krawedz.czas < odl[krawedz.cel][nowe_miecze]) {
odl[krawedz.cel][nowe_miecze] = akt.czas + krawedz.czas;
kolejka.push({odl[krawedz.cel][nowe_miecze], krawedz.cel, nowe_miecze});
}
}
}
}
cout << wynik << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IElORiA9IDFlOSArIDc7CgpzdHJ1Y3QgRHJvZ2EgewogICAgaW50IGNlbDsKICAgIGludCBjemFzOwogICAgaW50IHBvdHdvcnk7Cn07CgpzdHJ1Y3QgU3RhbiB7CiAgICBpbnQgY3phczsKICAgIGludCB3OwogICAgaW50IG1pZWN6ZTsKCiAgICBib29sIG9wZXJhdG9yPihjb25zdCBTdGFuJiBpbm55KSBjb25zdCB7CiAgICAgICAgcmV0dXJuIGN6YXMgPiBpbm55LmN6YXM7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwoKICAgIGludCBuLCBtLCBwLCBrOwogICAgaWYgKCEoY2luID4+IG4gPj4gbSA+PiBwID4+IGspKSByZXR1cm4gMDsKCiAgICB2ZWN0b3I8aW50PiBrb3dhbChuICsgMSwgMCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGs7ICsraSkgewogICAgICAgIGludCB3LCBxOwogICAgICAgIGNpbiA+PiB3ID4+IHE7CiAgICAgICAgaW50IG1hc2thID0gMDsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHE7ICsraikgewogICAgICAgICAgICBpbnQgcjsKICAgICAgICAgICAgY2luID4+IHI7CiAgICAgICAgICAgIG1hc2thIHw9ICgxIDw8IChyIC0gMSkpOwogICAgICAgIH0KICAgICAgICBrb3dhbFt3XSB8PSBtYXNrYTsKICAgIH0KCiAgICB2ZWN0b3I8dmVjdG9yPERyb2dhPj4gZ3JhZihuICsgMSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG07ICsraSkgewogICAgICAgIGludCB2LCB3LCB0LCBzOwogICAgICAgIGNpbiA+PiB2ID4+IHcgPj4gdCA+PiBzOwogICAgICAgIGludCBtYXNrYV9wb3R3b3JvdyA9IDA7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzOyArK2opIHsKICAgICAgICAgICAgaW50IHU7CiAgICAgICAgICAgIGNpbiA+PiB1OwogICAgICAgICAgICBtYXNrYV9wb3R3b3JvdyB8PSAoMSA8PCAodSAtIDEpKTsKICAgICAgICB9CiAgICAgICAgZ3JhZlt2XS5wdXNoX2JhY2soe3csIHQsIG1hc2thX3BvdHdvcm93fSk7CiAgICAgICAgZ3JhZlt3XS5wdXNoX2JhY2soe3YsIHQsIG1hc2thX3BvdHdvcm93fSk7CiAgICB9CgogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBvZGwobiArIDEsIHZlY3RvcjxpbnQ+KDEgPDwgcCwgSU5GKSk7CiAgICBwcmlvcml0eV9xdWV1ZTxTdGFuLCB2ZWN0b3I8U3Rhbj4sIGdyZWF0ZXI8U3Rhbj4+IGtvbGVqa2E7CgogICAgaW50IHN0YXJ0X21pZWN6ZSA9IGtvd2FsWzFdOwogICAgb2RsWzFdW3N0YXJ0X21pZWN6ZV0gPSAwOwogICAga29sZWprYS5wdXNoKHswLCAxLCBzdGFydF9taWVjemV9KTsKCiAgICBpbnQgd3luaWsgPSAtMTsKCiAgICB3aGlsZSAoIWtvbGVqa2EuZW1wdHkoKSkgewogICAgICAgIFN0YW4gYWt0ID0ga29sZWprYS50b3AoKTsKICAgICAgICBrb2xlamthLnBvcCgpOwoKICAgICAgICBpZiAoYWt0LmN6YXMgPiBvZGxbYWt0LnddW2FrdC5taWVjemVdKSBjb250aW51ZTsKCiAgICAgICAgaWYgKGFrdC53ID09IG4pIHsKICAgICAgICAgICAgd3luaWsgPSBha3QuY3phczsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBmb3IgKGF1dG8mIGtyYXdlZHogOiBncmFmW2FrdC53XSkgewogICAgICAgICAgICBpZiAoKGFrdC5taWVjemUgJiBrcmF3ZWR6LnBvdHdvcnkpID09IGtyYXdlZHoucG90d29yeSkgewogICAgICAgICAgICAgICAgaW50IG5vd2VfbWllY3plID0gYWt0Lm1pZWN6ZSB8IGtvd2FsW2tyYXdlZHouY2VsXTsKICAgICAgICAgICAgICAgIGlmIChha3QuY3phcyArIGtyYXdlZHouY3phcyA8IG9kbFtrcmF3ZWR6LmNlbF1bbm93ZV9taWVjemVdKSB7CiAgICAgICAgICAgICAgICAgICAgb2RsW2tyYXdlZHouY2VsXVtub3dlX21pZWN6ZV0gPSBha3QuY3phcyArIGtyYXdlZHouY3phczsKICAgICAgICAgICAgICAgICAgICBrb2xlamthLnB1c2goe29kbFtrcmF3ZWR6LmNlbF1bbm93ZV9taWVjemVdLCBrcmF3ZWR6LmNlbCwgbm93ZV9taWVjemV9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IHd5bmlrIDw8ICJcbiI7CgogICAgcmV0dXJuIDA7Cn0=