#include using namespace std; using ll=long long; using pp=pair; #define sr string #define vc vector #define db double #define fi first #define se second #define rep(i,n) for(int i=0;i<(int)n;i++) #define pb push_back #define all(v) v.begin(),v.end() #define pque priority_queue #define bpc(a) __builtin_popcount(a) int main(){ int n;cin>>n; vc v(n,vc(0)); rep(i,n-1){ int a,b;cin>>a>>b; a--;b--; v[a].pb(b); v[b].pb(a); } vcc(n); rep(i,n)cin>>c[i]; auto f=[&](auto f,int a,int p)->pp{ int res=0,now=c[a]; for(auto au:v[a])if(au!=p){ auto [x,y]=f(f,au,a); res+=x; now^=y; } if(now==0)return {res+1,1}; else return {res,0}; }; auto [ans,zz]=f(f,0,-1); if(zz)cout<<-1; else cout<