#include<bits/stdc++.h>
using namespace std;
const int N = (int)1e2+5;
char t[N];
int dp[N][N];
vector<string> s[N];
int a, n;
bool ask(int w, string k)
{
for (int i = w; i >= w - k.size() + 1; i--)
{
if (t[i] != k[k.size() - (w - i + 1)])
{
return false;
}
}
return true;
}
int main() {
cin >> t + 1;
int len = strlen(t+1);
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> a;
for (int j = 1; j <= a; ++j) {
string e;
cin >> e;
s[i].push_back(e);
}
}
for (int i = 0; i <= n; i++)
{
for (int j = 1; j <= len; j++)
{
dp[i][j] = 0x3f3f3f3f;
}
}
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= len; ++j) {
dp[i][j] = dp[i - 1][j];
for (auto& k : s[i]) {
if (j-k.size()<0 || !ask(j, k)) {//为什么换成j < k.size()才过
continue;
}
dp[i][j] = min(dp[i][j], dp[i - 1][j - k.size()]+1);
}
}
}
cout << (dp[n][len]==0x3f3f3f3f?-1:dp[n][len]);
}
为什么换成j < k.size()才过 为什么换成j < k.size()才过 为什么换成j < k.size()才过