#include <bits/stdc++.h> using namespace std; int main() { int n; cin >> n; vector<vector<int>> g(n + 1); for (int i = 0; i < n - 1; ++i) { int u, v; cin >> u >> v; g[u].push_back(v); g[v].push_back(u); } string s; // s[i-1] 为第 i 个节点颜色:'B' 或 'R' cin >> s; vector<char> vis(n + 1, 0); long long ans = 0; for (int i = 1; i <= n; ++i) if (!vis[i]) { // 只沿“颜色不同”的边跑一遍连通分量 long long sz = 0; stack<int> st; st.push(i); vis[i] = 1; while (!st.empty()) { int u = st.top(); st.pop(); ++sz; for (int v : g[u]) { if (!vis[v] && s[u - 1] != s[v - 1]) { vis[v] = 1; st.push(v); } } } ans += sz * (sz + 1) / 2; // 该分量贡献 } cout << ans << '\n'; return 0; }