def main(): n = int(input()) tree = [[] for _ in range(n)] s = ['0123456789abcdef'.index(c) for c in input()] trie = [[0 for _ in range(16)]] def insert(trie_node, val): if trie[trie_node][val] == 0: nxt = len(trie) trie[trie_node][val] = nxt trie.append([0 for _ in range(16)]) return trie[trie_node][val] for i in range(1, n): u, v = map(int, input().split()) u -= 1 v -= 1 tree[u].append(v) tree[v].append(u) for root in range(n): stk = [(root, root, insert(0, s[root]))] while stk: u, p, t = stk.pop() for v in tree[u]: if v == p: continue stk.append((v, u, insert(t, s[v]))) # Don't count the empty string! print(len(trie) - 1) if __name__ == '__main__': main()