import java.util.*;
public class Main {
static int n;
static char[] color;
static long[] weight;
static List<Integer>[] tree;
static boolean[] visited;
public static void main
(String[] args
) { Scanner sc
= new Scanner
(System.
in); n = sc.nextInt();
color = sc.next().toCharArray();
weight = new long[n + 1];
for (int i = 1; i <= n; i++) {
weight[i] = sc.nextLong();
}
for (int i = 1; i <= n; i++) {
tree[i] = new ArrayList<>();
}
for (int i = 1; i < n; i++) {
int u = sc.nextInt();
int v = sc.nextInt();
tree[u].add(v);
tree[v].add(u);
}
long res
= Long.
MAX_VALUE; for (int root = 1; root <= n; root++) {
char targetColor = color[root - 1];
visited = new boolean[n + 1];
long cost = dfs(root, -1, targetColor);
res
= Math.
min(res, cost
); }
}
// 计算以当前节点为根的子树变为目标颜色的总代价
static long dfs(int u, int parent, char targetColor) {
visited[u] = true;
long cost = 0;
if (color[u - 1] != targetColor) {
cost += weight[u];
}
for (int v : tree[u]) {
if (v != parent && !visited[v]) {
cost += dfs(v, u, targetColor);
}
}
return cost;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgc3RhdGljIGludCBuOwogICAgc3RhdGljIGNoYXJbXSBjb2xvcjsKICAgIHN0YXRpYyBsb25nW10gd2VpZ2h0OwogICAgc3RhdGljIExpc3Q8SW50ZWdlcj5bXSB0cmVlOwogICAgc3RhdGljIGJvb2xlYW5bXSB2aXNpdGVkOwoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBTY2FubmVyIHNjID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKICAgICAgICBuID0gc2MubmV4dEludCgpOwoKICAgICAgICBjb2xvciA9IHNjLm5leHQoKS50b0NoYXJBcnJheSgpOwogICAgICAgIHdlaWdodCA9IG5ldyBsb25nW24gKyAxXTsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICAgICAgd2VpZ2h0W2ldID0gc2MubmV4dExvbmcoKTsKICAgICAgICB9CgogICAgICAgIHRyZWUgPSBuZXcgQXJyYXlMaXN0W24gKyAxXTsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICAgICAgdHJlZVtpXSA9IG5ldyBBcnJheUxpc3Q8PigpOwogICAgICAgIH0KICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykgewogICAgICAgICAgICBpbnQgdSA9IHNjLm5leHRJbnQoKTsKICAgICAgICAgICAgaW50IHYgPSBzYy5uZXh0SW50KCk7CiAgICAgICAgICAgIHRyZWVbdV0uYWRkKHYpOwogICAgICAgICAgICB0cmVlW3ZdLmFkZCh1KTsKICAgICAgICB9CgogICAgICAgIGxvbmcgcmVzID0gTG9uZy5NQVhfVkFMVUU7CiAgICAgICAgZm9yIChpbnQgcm9vdCA9IDE7IHJvb3QgPD0gbjsgcm9vdCsrKSB7CiAgICAgICAgICAgIGNoYXIgdGFyZ2V0Q29sb3IgPSBjb2xvcltyb290IC0gMV07CiAgICAgICAgICAgIHZpc2l0ZWQgPSBuZXcgYm9vbGVhbltuICsgMV07CiAgICAgICAgICAgIGxvbmcgY29zdCA9IGRmcyhyb290LCAtMSwgdGFyZ2V0Q29sb3IpOwogICAgICAgICAgICByZXMgPSBNYXRoLm1pbihyZXMsIGNvc3QpOwogICAgICAgIH0KCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHJlcyk7CiAgICB9CgogICAgLy8g6K6h566X5Lul5b2T5YmN6IqC54K55Li65qC555qE5a2Q5qCR5Y+Y5Li655uu5qCH6aKc6Imy55qE5oC75Luj5Lu3CiAgICBzdGF0aWMgbG9uZyBkZnMoaW50IHUsIGludCBwYXJlbnQsIGNoYXIgdGFyZ2V0Q29sb3IpIHsKICAgICAgICB2aXNpdGVkW3VdID0gdHJ1ZTsKICAgICAgICBsb25nIGNvc3QgPSAwOwogICAgICAgIGlmIChjb2xvclt1IC0gMV0gIT0gdGFyZ2V0Q29sb3IpIHsKICAgICAgICAgICAgY29zdCArPSB3ZWlnaHRbdV07CiAgICAgICAgfQogICAgICAgIGZvciAoaW50IHYgOiB0cmVlW3VdKSB7CiAgICAgICAgICAgIGlmICh2ICE9IHBhcmVudCAmJiAhdmlzaXRlZFt2XSkgewogICAgICAgICAgICAgICAgY29zdCArPSBkZnModiwgdSwgdGFyZ2V0Q29sb3IpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBjb3N0OwogICAgfQp9Cg==