#include #include using namespace std; int N; string s; vectorG[1<<17]; int cc[1<<17],cw[1<<17]; void dfs1(int u,int p) { if(s[u]=='c')cc[u]++; else cw[u]++; for(int v:G[u]) { if(v!=p) { dfs1(v,u); cc[u]+=cc[v]; cw[u]+=cw[v]; } } } long ans=0; void dfs2(int u,int p,int pc,int pw) { long C=pc+cc[u],W=pw+cw[u]; if(s[u]=='w') { ans+=(long)cc[u]*pw; } for(int v:G[u]) { if(v!=p) { dfs2(v,u,C-cc[v],W-cw[v]); if(s[u]=='w') { ans+=(C-cc[v])*cw[v]; } } } } main() { cin>>N>>s; for(int i=1;i>u>>v;u--,v--; G[u].push_back(v); G[v].push_back(u); } dfs1(0,-1); dfs2(0,-1,0,0); cout<