Билл пытается компактно представить последовательность заглавных латинских букв от 'A' до 'Z', с учетом
повторяющихся последовательностей в ней. Например, возможный способ представить
последовательность AAAAAAAAAABABABCCD - есть 10(A)2(BA)B2(C)D. Билл ввел
формальное понятие упакованной последовательности так:
- последовательность, содержащая один символ из диапазона 'A'..'Z' считается
упакованной последовательностью. Ее распаковка возвращает тот же символ.
- если S и Q - упакованные последовательности, то SQ - также упакованная
последовательность. Причем, если результатом распаковки S является S', а Q - Q',
то SQ распаковывается в S'Q'.
- если S - упакованная последовательность, то X(S) - также упакованная
последовательность, где X - десятичное целое число, большее 1. Если S
распаковывается в S', то X(S) распаковывается в S', повторенную X раз.
Согласно этому определению легко распаковать любую запакованную
последовательность. На Билл более заинтересован в обратной операции. Он хочет
запаковать данную последовательность так, чтобы результирующая запакованная
последовательность содержала как можно меньше символов (включая цифры и
скобки).
Input
Входные данные содержат одну строку, состоящую не менее, чем
из одного и не более чем из 100 символов в диапазоне 'A'..'Z'.
Output
Запишите в выходной файл одно число - длину кратчайшего из вариантов
запаковки исходной последовательности.
Samples
Input | Output |
AAAAAAAAAABABABCCD | 12 |
NEERCYESYESYESNEERCYESYESYES | 14 |
Пояснение. Упакованные строки из примеров:
9(A)3(AB)CCD
2(NEERC3(YES))
|