作弊
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

溪染:六王毕四海蜀山兀,阿房出。覆压三百余里隔离天日骊山北构而西折,直走咸阳。二川溶溶流入宫墙。五步一楼,十步一阁;廊腰缦回檐牙高啄各抱地势钩心斗角......
叁秋:还在背《阿房宫赋》啊。
溪染:(停下背书)明天就要测试了,难道不背?
叁秋:什么?明天要测试?我现在抱佛脚还来得及嘛?
溪染:也就十来篇文言文而已。哦,你比较笨,那估计来不及了
叁秋:(沉默几秒)救救孩子吧!
溪染:我想想办法,我把文言文先换成拼音,然后在考场用动作语言传给你怎么样?
叁秋:什么动作语言?
溪染:我们先规定一个规则好了,我用‘点头’和‘摇头’向你传递信息。
叁秋:然后呢?
溪染:比如用‘点头-摇头’代表,用'点头-点头'代表
叁秋:我知道了!就用'点头-点头-点头'表示
溪染:没救了,你是真的傻!如果这样,那我'点头-点头-点头-点头-点头-点头'表示什么?
叁秋:可以,也行!!
溪染:对的,这样的规则就有歧义了,所以我们定义的任意2个规则,一个规则都不能是另一个的前缀,更不能相同!
叁秋:那这还不简单!我用'点头-摇头'表示,用'点头-点头-摇头'表示,用'点头-点头-点头-摇头'表示,以此类推!
溪染:用你这个规则,我脖子可能就不在了!
溪染:我们应该找到一个规则,让我‘点头’and‘摇头’的次数和最少,这样的话即可以快速传递信息,被监考老师发现的几率也小一些。
叁秋:那我们改怎么规定规则呢?
溪染:现在我们把文言文转为拼音先
(过了一会儿)
溪染:我们已经知道到时候我该给你传递的信息了,我们稍加计算一下,就可以找到最好的规则了
叁秋:那怎么计算呢?
溪染:我都为你付出这么多了,怎么找到最好的规则就靠你自己了
(又过了一会儿)
叁秋实在不知道怎么计算,于是找到了你

输入描述:

一行字符串,表示需要传达的信息,有可能是文言文拼音,中仅包含小写英文字母。

输出描述:

仅一行一个正整数表示问题的答案,表示传达信息所需最少的‘点头’and‘摇头’的次数之和。
示例1

输入

复制
aaaaaa

输出

复制
6

说明

‘a’用'点头'代表即可
示例2

输入

复制
abcabc

输出

复制
10

说明

‘a’用'点头'代表
‘b’用‘摇头-点头’代表
‘c’用‘摇头-摇头’代表
示例3

输入

复制
havefuninthegame

输出

复制
54

说明

解释那么长,这点地方够吗?

备注: