3
vector<vector<int>> graph;7
vector<int> getAns(int u, int parent) {9
char rootChar = global[u];10
vector<int> toReturn = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,11
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};13
for (int adj : graph[u]) {15
vector<int> c = getAns(adj, u);16
for (int i = 0; i < 26; i++) {19
ans[u] += c[rootChar - 'a'];22
toReturn[rootChar - 'a'] += 1;26
vector<int> countSubTrees(int n, vector<vector<int>> &edges, string labels) {31
for (vector<int> edge : edges) {32
graph[edge[0]].push_back(edge[1]);33
graph[edge[1]].push_back(edge[0]);