#AT1400. [ABC175F] Making Palindrome

[ABC175F] Making Palindrome

配点 : 600600 点

問題文

英小文字から成る NN 個の文字列 S1,S2,⋯ ,SNS_1, S_2, \cdots, S_N があります。

高橋君はまずこれらの文字列から重複を許して合計 11 個以上選んだ後、選んだ文字列を好きな順番で連結することで、回文であるような文字列を作ろうとしています。

文字列 SiS_i を 11 個使うにはコストが CiC_i かかり、同じ文字列であっても使った個数の分だけコストがかかります。

上述の方法で回文を作ることのできるように文字列を選ぶ方法のうち、コストの和としてありうる値の最小値を求めてください。

また、どのように選んでも回文を作ることが不可能である場合は −1-1 を出力してください。

制約

  • 1≤N≤501 \leq N \leq 50
  • 1≤∣Si∣≤201 \leq |S_i| \leq 20
  • SiS_i は英小文字から成る
  • 1≤Ci≤1091 \leq C_i \leq 10^9

入力

入力は以下の形式で標準入力から与えられる。

NN

S1S_1 C1C_1

S2S_2 C2C_2

::

SNS_N CNC_N

出力

回文を作ることのできるように文字列を選ぶ方法のうち、コストの和としてありうる値の最小値を出力せよ。不可能である場合は −1-1 を出力せよ。

3
ba 3
abc 4
cbaa 5
7

ba, abc, cbaa があります。

例えば、ba, abc を 11 個ずつ使うとコストは 77 で、abc, ba の順で連結すると回文になります。 また、abc, cbaa を 11 個ずつ使うとコストは 99 で、cbaa, abc の順で連結すると回文になります。

コスト 77 未満で回文を作ることはできないので、77 を出力してください。

2
abcab 5
cba 3
11

abcab を 11 個、cba を 22 個選んで、abcab, cba, cba の順で連結すると回文になり、コストは 1111 です。

4
ab 5
cba 3
a 12
ab 10
8

a を 11 個だけ選んで回文とすることもできますが、ab と cba を選んで連結する方がコストが小さいです。

2
abc 1
ab 2
-1

回文を作ることが不可能であるので、−1-1 を出力してください。