字符串袋子 - 代码源竞赛平台

题目描述

蜗蜗起初有一个空字符串 SS,面前有按顺序编号的 NN 个袋子。第 ii 个袋子里装有 AiA_i 个字符串。

他必须按编号从小到大处理每个袋子。处理一个袋子时,可以花 11 元,从中选择恰好一个字符串接到 SS 的末尾;也可以跳过这个袋子。一个袋子不能选择多个字符串,已经处理过的袋子也不能返回。

给定目标字符串 TT。求最后使 S=TS=T 所需的最少费用;如果无法做到,输出 −1-1。

输入格式

第一行包含目标字符串 TT。

第二行包含一个整数 NN,表示袋子数量。

接下来 NN 行,第 ii 行先给出整数 AiA_i,再给出这个袋子中的 AiA_i 个字符串 Si,1,Si,2,…,Si,AiS_{i,1},S_{i,2},\ldots,S_{i,A_i}。

输出格式

输出一行一个整数,表示最少费用;无法得到 TT 时输出 −1-1。

样例

ab
2
2 a z
1 b
2
abc
2
1 ab
1 c
2

样例解释

样例 1 中,从第一个袋子选 a,从第二个袋子选 b,花费 22 元得到 ab。

样例 2 中,依次选择 ab 和 c,花费 22 元得到 abc。

数据范围

对于 100% 的数据,保证 1≤∣T∣≤1001\le |T|\le 100,1≤N≤1001\le N\le 100,1≤Ai≤101\le A_i\le 10,1≤∣Si,j∣≤101\le |S_{i,j}|\le 10;所有字符串均只含小写英文字母。