Codeforces Round 367 (Div. 2)
C
Hard problem
Codeforces
1600
原题
← BD →
翻译中…

Vasiliy is fond of solving different tasks. Today he found one he wasn't able to solve himself, so he asks you to help.

翻译中…

Vasiliy is given $*n*$ strings consisting of lowercase English letters. He wants them to be sorted in lexicographical order (as in the dictionary), but he is not allowed to swap any of them. The only operation he is allowed to do is to reverse any of them (first character becomes last, second becomes one before last and so on).

翻译中…

To reverse the $*i*$-th string Vasiliy has to spent $*c*_{*i*}$ units of energy. He is interested in the minimum amount of energy he has to spent in order to have strings sorted in lexicographical order.

翻译中…

String $*A*$ is lexicographically smaller than string $*B*$ if it is shorter than $*B*$ ($|*A*| < |*B*|$) and is its prefix, or if none of them is a prefix of the other and at the first position where they differ character in $*A*$ is smaller than the character in $*B*$.

翻译中…

For the purpose of this problem, two equal strings nearby do not break the condition of sequence being sorted lexicographically.

翻译中…

Input

翻译中…

The first line of the input contains a single integer $*n*$ ($2 ≤ *n* ≤ 100 000$) — the number of strings.

翻译中…

The second line contains $*n*$ integers $*c*_{*i*}$ ($0 ≤ *c*_{*i*} ≤ 10^{9}$), the $*i*$-th of them is equal to the amount of energy Vasiliy has to spent in order to reverse the $*i*$-th string.

翻译中…

Then follow $*n*$ lines, each containing a string consisting of lowercase English letters. The total length of these strings doesn't exceed $100 000$.

翻译中…

Output

翻译中…

If it is impossible to reverse some of the strings such that they will be located in lexicographical order, print $- 1$. Otherwise, print the minimum total amount of energy Vasiliy has to spent.

翻译中…

Note

翻译中…

In the second sample one has to reverse string $2$ or string $3$. To amount of energy required to reverse the string $3$ is smaller.

翻译中…

In the third sample, both strings do not change after reverse and they go in the wrong order, so the answer is $- 1$.

翻译中…

In the fourth sample, both strings consists of characters 'a' only, but in the sorted order string "aa" should go before string "aaa", thus the answer is $- 1$.

翻译中…

样例

Input #1
2
1 2
ba
ac
Output #1
1
InputCopy OutputCopy
Input #2
3
1 3 1
aa
ba
ac
Output #2
1
InputCopy OutputCopy
Input #3
2
5 5
bbb
aaa
Output #3
-1
InputCopy OutputCopy
Input #4
2
3 3
aaa
aa
Output #4
-1
InputCopy OutputCopy
题目信息
题号
706C
时间限制
1 s
内存限制
256 MB
标签
动态规划
字符串

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。