#!/usr/bin/env python3
import sys
sys.setrecursionlimit(2505)

data = sys.stdin.read().split()
it = iter(data)
n = int(next(it))
hex_str = next(it).strip()

ch = [0] * n
i = 0
for c in hex_str:
  ch[i] = ord(c) - ord('0') if '0' <= c <= '9' else ord(c) - ord('a') + 10
  i += 1

adj = [[] for _ in range(n)]
for _ in range(n - 1):
  x = int(next(it)) - 1
  y = int(next(it)) - 1
  adj[x].append(y)
  adj[y].append(x)

child = [[-1] * 16]

def dfs(x, p, t):
  c = ch[x]
  nxt = child[t][c]
  if nxt == -1:
    nxt = len(child)
    child[t][c] = nxt
    child.append([-1] * 16)
  for y in adj[x]:
    if y != p:
      dfs(y, x, nxt)

for i in range(n):
  dfs(i, -1, 0)

print(len(child) - 1)
