#include <bits/stdc++.h>
using namespace std;
const int N=2005;
int n,m,a[N];
vector <int> adj[N];
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
if(n>2000){
cout << -1;
exit(0);
}
for(int i=1;i<n;i++){
int u,v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
for(int i=1;i<=n;i++) cin >> a[i];
for(int i=1;i<=n;i++){
vector <int> color(n+1,-2);
vector <bool> vis(n+1,false);
queue <pair <int,int>> q;
q.push({0,i});
while(!q.empty()){
auto [d_u,u]=q.front();
q.pop();
if(vis[u]) continue;
vis[u]=true;
if(d_u!=0 && color[d_u]==-2) color[d_u]=a[u];
else if(d_u!=0) color[d_u]=-1;
for(int v:adj[u]) q.push({d_u+1,v});
}
set <int> ans;
for(int x:color) if(x>0) ans.insert(x);
cout << ans.size() << "\n";
}
}