N = int(input()) jisu = [0] * N G = [set() for _ in range(N)] for i in range(N - 1): u, v = map(int, input().split()) u -= 1 v -= 1 G[u].add(v) G[v].add(u) jisu[u] += 1 jisu[v] += 1 C = list(map(int, input().split())) jisu1 = [] for i in range(N): if jisu[i] == 1: jisu1.append(i) ans = 0 while len(jisu1) > 1: pos = jisu1.pop() jisu[pos] -= 1 nex = G[pos].pop() G[nex].remove(pos) jisu[nex] -= 1 if jisu[nex] == 1: jisu1.append(nex) # 色変える判断 if C[pos] == 0: ans += 1 C[nex] ^= 1 pos = jisu1.pop() # 最後の頂点 if C[pos] == 1: print(ans) else: print(-1)