- 编辑距离
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int f[1001][1001];
int main()
{char ch[1001][13];int n, m;cin >> n >> m;for (int i = 0; i < n; i++){scanf("%s",ch[i]+1);}while (m--){int num;char op[15];scanf("%s",op+1);cin >> num;int cou = 0;for (int h = 0; h < n; h++){int len1 = strlen(ch[h] + 1);int len2 = strlen(op+1);for (int i = 1; i <= len1; i++)f[i][0] = i;for (int i = 1; i <= len2; i++)f[0][i] = i;for (int i = 1; i <= len1; i++){for (int j = 1; j <= len2; j++){f[i][j] = min(f[i - 1][j], f[i][j - 1]) + 1;if (ch[h][i] == op[j])f[i][j] = min(f[i - 1][j - 1], f[i][j]);else f[i][j] = min(f[i-1][j-1]+1,f[i][j]);}}if (f[len1][len2] <= num)cou++;}cout << cou << endl;}
}