import pypyjit pypyjit.set_param("max_unroll_recursion=-1") import sys sys.setrecursionlimit(10**7) N = int(input()) edge = [[] for _ in range(N)] for _ in range(N-1): a,b = list(map(int,input().split())) a -= 1;b -= 1 edge[a].append(b) edge[b].append(a) C = list(map(int,input().split())) if(C.count(0)%2 == 1): print(-1) exit() # 部分木の根元に白を持ってくる (必要手数, 根は白?) def f(n,pre): ret = 0 is_white = C[n] == 0 for i in edge[n]: if(i == pre):continue count,w = f(i,n) ret += count + w is_white ^= w return ret, is_white print(f(0,-1)[0])