dp。
#include<iostream>
#include<string>
using namespace std;
int W, L;
string m;
string d[605];
int dp[306];
int main()
{
cin >> W >> L;
cin >> m;
for(int i = 0; i < W; i ++)
cin >> d[i];
int k, t;
for(int i = 1; i <= L; i ++)
{
dp[i] = dp[i - 1] + 1;
for(int j = 0; j < W; j ++)
{
k = i;
t = d[j].size() - 1;
while(k >= 1 && t >= 0)
if(m[k - 1] == d[j][t])
{
k --;
t --;
}
else
k --;
if(t == -1)
dp[i] = min(dp[i], dp[k] + i - k - int(d[j].size()));
}
}
cout << dp[L] << endl;
// system("pause");
return 0;
}