#AA3. SPJ例题 折叠序列 Folding

SPJ例题 折叠序列 Folding

题目描述

比尔正在试图用折叠重复子序列的方式紧凑的表示由大写字母 AZ 组成的字符序列。

例如,表示序列 AAAAAAAAAABABABCCD 的一种方式是 10(A)2(BA)B2(C)D

他通过以下方式定义了折叠的字符序列以及它们的展开变换:

  1. 包含单个字符的序列被认为是折叠序列,展开它得到的序列为它本身。
  2. 如果 SSQQ 是两个折叠序列,并且 SS 可以展开得到 SS’QQ 可以展开得到 QQ’,则认为 SQSQ 也是一个折叠序列,并且 SQSQ 展开得到 SQS’Q’
  3. 如果 SS 是折叠序列,则 X(S)X(S) 也是折叠序列,其中 XX 为大于 11 的整数。如果 SS 展开得到 SS’,则 X(S)X(S) 展开得到 XXSS’

根据定义可以展开任意给出的折叠序列,现在给出原序列,请你将它折叠,并使得折叠序列包含尽可能少的字符数。

输入格式

输入包含一行由大写字母构成的字符序列,序列长度在 11100100 之间。

输出格式

输出包含字符数最少的折叠序列,如果答案不唯一则任意输出一个即可。

输入样例:

AAAAAAAAAABABABCCD

输出样例:

9(A)3(AB)CCD