#include <iostream>
#include<numeric>
#include<algorithm>
#include<vector>
using namespace std;
#define ll long long
class DSU {
public:
vector<int>parent;
//constructor
DSU(int n = 100) {
parent.resize(n);
iota(parent.begin(), parent.end(), 0);
}
//find_set function
int find_set(int x) {
return (parent[x] == x ? x : (parent[x] = find_set(parent[x])));
}
//union function
void unite(int x, int y, ll cost[]) {
x = find_set(x);
y = find_set(y);
if (x != y) {
if (cost[x] < cost[y]) {
parent[y] = x;
}
else {
parent[x] = y;
}
}
}
};
int main() {
int n, k, m;
cin >> n >> k >> m;
string s[100009];
for (int i = 0; i < n; i++) {
cin >> s[i];
}
ll cost[100009];
for (int i = 1; i <= n; i++) {
cin >> cost[i];
}
int x;
vector<vector<int>> same_meaning;
same_meaning.resize(k);
for (int i = 0; i < k; i++) {
cin >> x;
for (int j = 0; j < x; j++) {
int m; cin >> m;
same_meaning[i].push_back(m);
}
}
string message[m];
for (int i = 0; i < m; i++) {
cin >> message[i];
}
DSU d(n+5);
for (int i = 0; i < k; i++) {
int size = same_meaning[i].size();
for (int x = 0; x < size; x += 2 ) {
if (x + 1 < size)
d.unite(same_meaning[i][x], same_meaning[i][x + 1], cost);
}
}
ll sum = 0;
for (int i = 0; i < m; i++) {
string stemp = message[i];
auto it = find(s, s + m, stemp) - s + 1;
sum = (ll)sum + cost[d.find_set(it)];
}
cout << (ll)sum << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxudW1lcmljPgojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlPHZlY3Rvcj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKY2xhc3MgRFNVIHsKcHVibGljOgogICAgdmVjdG9yPGludD5wYXJlbnQ7CiAgICAvL2NvbnN0cnVjdG9yCiAgICBEU1UoaW50IG4gPSAxMDApIHsKICAgICAgICBwYXJlbnQucmVzaXplKG4pOwogICAgICAgIGlvdGEocGFyZW50LmJlZ2luKCksIHBhcmVudC5lbmQoKSwgMCk7CiAgICB9CgoKCiAgICAvL2ZpbmRfc2V0IGZ1bmN0aW9uCiAgICBpbnQgZmluZF9zZXQoaW50IHgpIHsKICAgICAgICByZXR1cm4gKHBhcmVudFt4XSA9PSB4ID8geCA6IChwYXJlbnRbeF0gPSBmaW5kX3NldChwYXJlbnRbeF0pKSk7CiAgICB9CgogICAgLy91bmlvbiBmdW5jdGlvbgoKICAgIHZvaWQgdW5pdGUoaW50IHgsIGludCB5LCBsbCBjb3N0W10pIHsKICAgICAgICB4ID0gZmluZF9zZXQoeCk7CiAgICAgICAgeSA9IGZpbmRfc2V0KHkpOwogICAgICAgIGlmICh4ICE9IHkpIHsKCiAgICAgICAgICAgIGlmIChjb3N0W3hdIDwgY29zdFt5XSkgewogICAgICAgICAgICAgICAgcGFyZW50W3ldID0geDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHBhcmVudFt4XSA9IHk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgoKfTsKaW50IG1haW4oKSB7CgogICAgaW50IG4sIGssIG07CiAgICBjaW4gPj4gbiA+PiBrID4+IG07CiAgICBzdHJpbmcgc1sxMDAwMDldOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBjaW4gPj4gc1tpXTsKICAgIH0KICAgIGxsIGNvc3RbMTAwMDA5XTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGNpbiA+PiBjb3N0W2ldOwogICAgfQoKICAgIGludCB4OwogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBzYW1lX21lYW5pbmc7CiAgICBzYW1lX21lYW5pbmcucmVzaXplKGspOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrOyBpKyspIHsKICAgICAgICBjaW4gPj4geDsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHg7IGorKykgewogICAgICAgICAgICBpbnQgbTsgY2luID4+IG07CiAgICAgICAgICAgIHNhbWVfbWVhbmluZ1tpXS5wdXNoX2JhY2sobSk7CiAgICAgICAgfQogICAgfQoKICAgIHN0cmluZyBtZXNzYWdlW21dOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtOyBpKyspIHsKICAgICAgICBjaW4gPj4gbWVzc2FnZVtpXTsKICAgIH0KCgogICAgRFNVIGQobis1KTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGs7IGkrKykgewogICAgICAgIGludCBzaXplID0gc2FtZV9tZWFuaW5nW2ldLnNpemUoKTsKICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHNpemU7IHggKz0gMiApIHsKICAgICAgICAgICAgaWYgKHggKyAxIDwgc2l6ZSkKICAgICAgICAgICAgICAgIGQudW5pdGUoc2FtZV9tZWFuaW5nW2ldW3hdLCBzYW1lX21lYW5pbmdbaV1beCArIDFdLCBjb3N0KTsKICAgICAgICB9CiAgICB9CgogIAoKICAgIGxsIHN1bSA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKykgewogICAgICAgIHN0cmluZyBzdGVtcCA9IG1lc3NhZ2VbaV07CiAgICAgICAgYXV0byBpdCA9IGZpbmQocywgcyArIG0sIHN0ZW1wKSAtIHMgKyAxOwoKICAgICAgICAKICAgICAgICBzdW0gPSAobGwpc3VtICsgY29zdFtkLmZpbmRfc2V0KGl0KV07CiAgICB9CgogICAgY291dCA8PCAobGwpc3VtIDw8IGVuZGw7Cgp9