AT_abc175_f [ABC175F] Making Palindrome

题目描述

给定 $N$ 个由小写英文字母组成的字符串 $S_1,S_2,\ldots,S_N$。 高桥想从这些字符串中选择至少一个字符串(允许重复选择),并将选出的字符串按照任意顺序拼接,使得到的字符串是一个回文串。 每使用一次字符串 $S_i$,需要花费 $C_i$ 的代价。如果多次使用同一个字符串,则每次使用都需要支付相应的代价。 求构造回文串所需的最小总代价。如果无法构造出回文串,输出 $-1$。

输入格式

第一行输入一个整数 $N$。 接下来 $N$ 行,每行输入一个字符串 $S_i$ 和一个整数 $C_i$。

输出格式

输出一个整数,表示构造回文串所需的最小总代价。如果无法构造出回文串,输出 $-1$。

说明/提示

**样例 #1 解释** 给定的字符串为 `ba`、`abc` 和 `cbaa`。 例如,分别使用一次 `ba` 和 `abc`,总代价为 $7$。按照 `abc`、`ba` 的顺序拼接,可以得到一个回文串。 此外,分别使用一次 `abc` 和 `cbaa`,总代价为 $9$。按照 `cbaa`、`abc` 的顺序拼接,也可以得到一个回文串。 由于无法以小于 $7$ 的代价构造回文串,因此输出 $7$。 **样例 #2 解释** 使用一次 `abcab` 和两次 `cba`,按照 `abcab`、`cba`、`cba` 的顺序拼接,可以得到一个回文串,总代价为 $11$。 **样例 #3 解释** 只使用一次 `a` 就可以得到一个回文串,但拼接 `ab` 和 `cba` 的代价更小。 **样例 #4 解释** 无法构造出回文串,因此输出 $-1$。 **数据范围** - $1\le N\le 50$ - $1\le |S_i|\le 20$ - $S_i$ 仅由小写英文字母组成。 - $1\le C_i\le 10^9$