### minimumScore 
import math
from math import inf
from collections import defaultdict
from typing import *
def f_gold(nums: List[int], edges: List[List[int]]) -> int:
    def dfs(i, fa, x):
        res = nums[i]
        for j in g[i]:
            if j != fa and j != x:
                res ^= dfs(j, i, x)
        return res
    def dfs2(i, fa, x):
        nonlocal s, s1, ans
        res = nums[i]
        for j in g[i]:
            if j != fa and j != x:
                a = dfs2(j, i, x)
                res ^= a
                b = s1 ^ a
                c = s ^ s1
                t = max(a, b, c) - min(a, b, c)
                ans = min(ans, t)
        return res
    g = defaultdict(list)
    for a, b in edges:
        g[a].append(b)
        g[b].append(a)
    s = 0
    for v in nums:
        s ^= v
    n = len(nums)
    ans = inf
    for i in range(n):
        for j in g[i]:
            s1 = dfs(i, -1, j)
            dfs2(i, -1, j)
    return ans