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

题目描述

\hspace{15pt}给定一个仅由小写字母构成的字符串 s,以及一个长度为 26 的数组 {\rm cnt},其中 {\rm cnt}_i 表示第 i 个字母({\rm cnt}_0 表示字母 \texttt{`a'}{\rm cnt}_1 表示字母 \texttt{`b'}、……、{\rm cnt}_{25} 表示字母 \texttt{`z'})的数量。
\hspace{15pt}你需要使用 {\rm cnt} 中的字符重新拼接出尽可能多的字符串,要求每个新字符串的字典序必须严格大于 s{\rm cnt} 中的字符可以不用完)。
\hspace{15pt}请计算最多能构造多少个这样的字符串。不要求互不相同,计数按构造的个数累加。

【名词解释】
\hspace{15pt}字符串的字典序比较:从左到右逐个比较两个字符串的字符。如果在某个位置上字符不同,比较这两个字符的字母表顺序,字母序大的字符串字典序也大。如果一直比较到其中一个字符串结束,则较短的字符串字典序更小。

输入描述:

\hspace{15pt}第一行输入一个长度为 |s| 的字符串 s \left(1 \leq |s| \leq 2 \times 10^5\right)
\hspace{15pt}第二行输入 26 个整数 {\rm cnt}_0,{\rm cnt}_1,\dots,{\rm cnt}_{25} \left(0 \leq {\rm cnt}_i \leq 10^9\right),代表每个字符还剩下多少个。除此之外,保证 {\rm cnt}_i 之和不超过 10^9

输出描述:

\hspace{15pt}输出一个整数,代表答案。
示例1

输入

复制
dcb
1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

输出

复制
2

说明

\hspace{15pt}在这个样例中,给了 \texttt{`a'}\texttt{`b'}\texttt{`c'}\texttt{`d'}\texttt{`e'} 字符各一个,可以构造出 \texttt{\texttt{ 两个字典序严格大于 \texttt{ 的字符串。
示例2

输入

复制
fedcb
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

输出

复制
42

说明