#include using namespace std; using ll = long long; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); ll N; cin >> N; vector> g(N); for(ll i = 0, a, b; i < N - 1; i++) { cin >> a >> b; a--, b--; g[a].emplace_back(b); g[b].emplace_back(a); } vector C(N); for(auto &i : C) { cin >> i; } vector p(N, -1); ll ans = 0; auto DFS = [&](auto &&DFS, ll v) -> bool { for(auto &nv : g[v]) { if(nv == p[v]) { continue; } p[nv] = v; C[v] ^= DFS(DFS, nv); } ans += !C[v]; return !C[v]; }; cout << (DFS(DFS, 0) ? -1 : ans) << "\n"; }