B. Обфускация кода
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
512 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Костя очень любит писать контесты на Codeforces. Правда, его расстраивает, что его постоянно взламывают. Поэтому перед очередным контестом он решил обфусцировать свой код (то есть изменить его так, чтобы сделать менее читабельным).

Обфускация происходит так. Сперва Костя смотрит на первый идентификатор в своей программе и заменяет все его вхождения на букву a, затем смотрит на следующий, который ещё не был заменён, и заменяет все его вхождения на букву b, и так далее. Костя — хороший программист, поэтому в его изначальной программе не бывает однобуквенных имён. Кроме того, в любой его программе не более 26 различных идентификаторов.

Вам дан список идентификаторов из некоторой программы в том порядке, в котором они встречаются в программе, с удалёнными пробелами и символами переноса строки. Определите, могла ли эта программа получиться в результате обфускации Костей.

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

В единственной строке входного файла содержится строка S, состоящая из маленьких латинских букв (1 ≤ |S| ≤ 500) — список идентификаторов программы с удалёнными пробелами.

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

Если данная программа могла получиться в результате обфускации Костей, выведите «YES» (без кавычек), иначе выведите «NO».

Примеры
Входные данные
abacaba
Выходные данные
YES
Входные данные
jinotega
Выходные данные
NO
Примечание

В первом примере, один из возможных списков идентификаторов такой: «number string number character number string number». Обфускация такой программы выглядела бы следующим образом:

  • заменить все вхождения number на a, в результате получается «a string a character a string a»,
  • заменить все вхождения string на b, в результате получается «a b a character a b a»,
  • заменить все вхождения character на c, в результате получается «a b a c a b a»,
  • все идентификаторы заменены, поэтому обфускация завершается.