D. Бог рэпа
ограничение по времени на тест
7 секунд
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Рик влюблен в Юнити. Но и мистер Мисикс также любит Юнити. Поэтому Рик и мистер Мисикс «любовные соперники».

Юнити нравится рэп, поэтому было решено, что они должны участвовать в рэп игре (баттле), чтобы выбрать лучшего. Рик слишком ботаник, поэтому вместо этого он собирается сделать свой текст используя его оригинальный алгоритм на лирике песни «Rap God».

Его алгоритм немного сложен. Он делает дерево с n вершинами, пронумерованными от 1 до n. На каждом ребре дерева написана маленькая латинская буква. Он определил str(a, b), как строку сформированную написанием всех букв, одну за другой, на кратчайшем пути от a до b (длина строки равна расстоянию от a до b). Заметьте, что str(a, b) это, записанная задом наперед, строка str(b, a). Также строка str(a, a) является пустой строкой.

Чтобы сделать лучший текст, ему необходимо отвечать на некоторые запросы, но он не ученый-компьютерщик и не может ответить на эти запросы, поэтому он просит вас помочь ему. Каждый запрос характеризуется двумя вершинами x и y (x ≠ y). Ответом на этот запрос является кол-во таких вершин z, что z ≠ x, z ≠ y и str(x, y) лексикографически больше, чем str(x, z).

Строка x  =  x1x2...x|x| лексикографически больше, чем строка y  =  y1y2...y|y|, если |x|  >  |y| и x1  =  y1,  x2  =  y2,  ...,  x|y|  =  y|y|, или существует такое r (r  <  |x|,  r  <  |y|), что x1  =  y1,  x2  =  y2,  ...,  xr  =  yr и xr  +  1  >  yr  +  1. Символы сравниваются, как их ASCII коды (или как их позиции в алфавите).

Помогите Рику заполучить девушку.

Входные данные

Первая строка входных данных содержит два целых числа n и q (2 ≤ n ≤ 20000, 1 ≤ q ≤ 20000) — количество вершин в дереве и количество запросов соответсвенно.

Следующие n - 1 строк содержат ребра. Каждая строка содержит два целых числа v и u (концы ребра), за которыми следует маленькая латинская буква c (1 ≤ v, u ≤ n, v ≠ u).

Следующие q строк содержат запросы. Каждая строка содержит два целых числа x и y (1 ≤ x, y ≤ n, x ≠ y).

Выходные данные

Для каждого запроса выведите ответ в одну строку.

Примеры
Входные данные
4 3
4 1 t
3 2 p
1 2 s
3 2
1 3
2 1
Выходные данные
0
1
1
Входные данные
8 4
4 6 p
3 7 o
7 8 p
4 5 d
1 3 o
4 3 p
3 2 e
8 6
3 7
8 1
4 3
Выходные данные
6
1
3
1
Примечание

Дерево для первого теста из условия:

Дерево для второго теста из условия:

В этом тесте:

  • str(8, 1) = poo
  • str(8, 2) = poe
  • str(8, 3) = po
  • str(8, 4) = pop
  • str(8, 5) = popd
  • str(8, 6) = popp
  • str(8, 7) = p

Поэтому для первого запроса и для третьего запроса это ответ.