import java.util.*;
public class Main {
static int n;
static char[] color;
static long[] weight;
static List<Integer>[] tree;
static long dfs(int u, int parent, char targetColor) {
long cost = 0;
if (color[u] != targetColor) cost += weight[u];
for (int v : tree[u]) {
if (v != parent) {
cost += dfs(v, u, targetColor);
}
}
return cost;
}
public static void main
(String[] args
) { Scanner sc
= new Scanner
(System.
in); n = sc.nextInt();
color = (" " + sc.next()).toCharArray(); // 1-index
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(), v = sc.nextInt();
tree[u].add(v);
tree[v].add(u);
}
long minCost
= Long.
MAX_VALUE;
// 枚举每个点作为根节点
for (int root = 1; root <= n; root++) {
char target = color[root];
long cost = dfs(root, -1, target);
minCost
= Math.
min(minCost, cost
); }
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgc3RhdGljIGludCBuOwogICAgc3RhdGljIGNoYXJbXSBjb2xvcjsKICAgIHN0YXRpYyBsb25nW10gd2VpZ2h0OwogICAgc3RhdGljIExpc3Q8SW50ZWdlcj5bXSB0cmVlOwoKICAgIHN0YXRpYyBsb25nIGRmcyhpbnQgdSwgaW50IHBhcmVudCwgY2hhciB0YXJnZXRDb2xvcikgewogICAgICAgIGxvbmcgY29zdCA9IDA7CiAgICAgICAgaWYgKGNvbG9yW3VdICE9IHRhcmdldENvbG9yKSBjb3N0ICs9IHdlaWdodFt1XTsKICAgICAgICBmb3IgKGludCB2IDogdHJlZVt1XSkgewogICAgICAgICAgICBpZiAodiAhPSBwYXJlbnQpIHsKICAgICAgICAgICAgICAgIGNvc3QgKz0gZGZzKHYsIHUsIHRhcmdldENvbG9yKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gY29zdDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgU2Nhbm5lciBzYyA9IG5ldyBTY2FubmVyKFN5c3RlbS5pbik7CiAgICAgICAgbiA9IHNjLm5leHRJbnQoKTsKCiAgICAgICAgY29sb3IgPSAoIiAiICsgc2MubmV4dCgpKS50b0NoYXJBcnJheSgpOyAvLyAxLWluZGV4CiAgICAgICAgd2VpZ2h0ID0gbmV3IGxvbmdbbiArIDFdOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgICAgICB3ZWlnaHRbaV0gPSBzYy5uZXh0TG9uZygpOwogICAgICAgIH0KCiAgICAgICAgdHJlZSA9IG5ldyBBcnJheUxpc3RbbiArIDFdOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgdHJlZVtpXSA9IG5ldyBBcnJheUxpc3Q8PigpOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGludCB1ID0gc2MubmV4dEludCgpLCB2ID0gc2MubmV4dEludCgpOwogICAgICAgICAgICB0cmVlW3VdLmFkZCh2KTsKICAgICAgICAgICAgdHJlZVt2XS5hZGQodSk7CiAgICAgICAgfQoKICAgICAgICBsb25nIG1pbkNvc3QgPSBMb25nLk1BWF9WQUxVRTsKCiAgICAgICAgLy8g5p6a5Li+5q+P5Liq54K55L2c5Li65qC56IqC54K5CiAgICAgICAgZm9yIChpbnQgcm9vdCA9IDE7IHJvb3QgPD0gbjsgcm9vdCsrKSB7CiAgICAgICAgICAgIGNoYXIgdGFyZ2V0ID0gY29sb3Jbcm9vdF07CiAgICAgICAgICAgIGxvbmcgY29zdCA9IGRmcyhyb290LCAtMSwgdGFyZ2V0KTsKICAgICAgICAgICAgbWluQ29zdCA9IE1hdGgubWluKG1pbkNvc3QsIGNvc3QpOwogICAgICAgIH0KCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG1pbkNvc3QpOwogICAgfQp9Cg==