#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 1e6;
long long n;
vector<long long> a[MaxN+5];
bool visited[MaxN+5];
long long depth[MaxN+5],color[MaxN+5];
string s;
void input()
{
cin >> n >> s;
s=" "+s;
for(long long i=1;i<=n;i++)
{
if(s[i]=='1')
{
color[i]=-1;
}
else
{
color[i]=1;
}
}
for(long long i=1;i<=n-1;i++)
{
long long u,v;
cin >> u >> v;
a[u].push_back(v);
a[v].push_back(u);
}
}
void dfs(long long i,vector<long long> a[],bool visited[],long long depth[],long long color[])
{
stack<long long> st;
st.push(i);
visited[i]=true;
depth[i]=color[i];
while(!st.empty())
{
long long u=st.top();
st.pop();
for(long long v:a[u])
{
if(!visited[v])
{
visited[v]=true;
depth[v]=depth[u]+color[v];
st.push(v);
}
}
}
}
void solve()
{
memset(visited,false,sizeof(visited));
memset(depth,0,sizeof(depth));
dfs(1,a,visited,depth,color);
long long res=0;
for(long long i=1;i<=n;i++)
{
if(depth[i]>0)
{
res++;
}
}
cout << res;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
input();
solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxvbmcgbG9uZyBNYXhOID0gMWU2OwoKbG9uZyBsb25nIG47CnZlY3Rvcjxsb25nIGxvbmc+IGFbTWF4Tis1XTsKYm9vbCB2aXNpdGVkW01heE4rNV07CmxvbmcgbG9uZyBkZXB0aFtNYXhOKzVdLGNvbG9yW01heE4rNV07CnN0cmluZyBzOwoKdm9pZCBpbnB1dCgpCnsKICAgIGNpbiA+PiBuID4+IHM7CgogICAgcz0iICIrczsKCiAgICBmb3IobG9uZyBsb25nIGk9MTtpPD1uO2krKykKICAgIHsKICAgICAgICBpZihzW2ldPT0nMScpCiAgICAgICAgewogICAgICAgICAgICBjb2xvcltpXT0tMTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgY29sb3JbaV09MTsKICAgICAgICB9CiAgICB9CgogICAgZm9yKGxvbmcgbG9uZyBpPTE7aTw9bi0xO2krKykKICAgIHsKICAgICAgICBsb25nIGxvbmcgdSx2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CiAgICAgICAgYVt1XS5wdXNoX2JhY2sodik7CiAgICAgICAgYVt2XS5wdXNoX2JhY2sodSk7CiAgICB9Cn0KCnZvaWQgZGZzKGxvbmcgbG9uZyBpLHZlY3Rvcjxsb25nIGxvbmc+IGFbXSxib29sIHZpc2l0ZWRbXSxsb25nIGxvbmcgZGVwdGhbXSxsb25nIGxvbmcgY29sb3JbXSkKewogICAgc3RhY2s8bG9uZyBsb25nPiBzdDsKCiAgICBzdC5wdXNoKGkpOwogICAgdmlzaXRlZFtpXT10cnVlOwogICAgZGVwdGhbaV09Y29sb3JbaV07CgogICAgd2hpbGUoIXN0LmVtcHR5KCkpCiAgICB7CiAgICAgICAgbG9uZyBsb25nIHU9c3QudG9wKCk7CiAgICAgICAgc3QucG9wKCk7CgogICAgICAgIGZvcihsb25nIGxvbmcgdjphW3VdKQogICAgICAgIHsKICAgICAgICAgICAgaWYoIXZpc2l0ZWRbdl0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZpc2l0ZWRbdl09dHJ1ZTsKICAgICAgICAgICAgICAgIGRlcHRoW3ZdPWRlcHRoW3VdK2NvbG9yW3ZdOwogICAgICAgICAgICAgICAgc3QucHVzaCh2KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKdm9pZCBzb2x2ZSgpCnsKICAgIG1lbXNldCh2aXNpdGVkLGZhbHNlLHNpemVvZih2aXNpdGVkKSk7CiAgICBtZW1zZXQoZGVwdGgsMCxzaXplb2YoZGVwdGgpKTsKCiAgICBkZnMoMSxhLHZpc2l0ZWQsZGVwdGgsY29sb3IpOwoKICAgIGxvbmcgbG9uZyByZXM9MDsKCiAgICBmb3IobG9uZyBsb25nIGk9MTtpPD1uO2krKykKICAgIHsKICAgICAgICBpZihkZXB0aFtpXT4wKQogICAgICAgIHsKICAgICAgICAgICAgcmVzKys7CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgcmVzOwp9CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwoKICAgIGlucHV0KCk7CiAgICBzb2x2ZSgpOwp9