#include #include int d[101][101], n, m; char s1[101][82], s2[101][82]; void citire(int &n, char s[][82]){ scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%s", s[i]); } void solve(){ d[0][0] = 0; for(int i = 1; i <= m; i++) d[i][0] = i; for(int j = 1; j <= n; j++) d[0][j] = j; for(int i = 1; i <= m; i++){ for(int j = 1; j <= n; j++) if(strcmp(s1[i], s2[j]) != 0){ int x = d[i-1][j-1] + 1; if(x > d[i][j-1] + 1) x = d[i][j-1] + 1; if(x > d[i-1][j] + 1) x = d[i-1][j] +1; d[i][j] = x; } else d[i][j] = d[i-1][j-1]; } } int main(){ citire(n,s1); citire(m,s2); m++;n++; solve(); d[m-1][n-1]-=1; for(int i = 0; i < m; i++){ for(int j = 0; j < n; j++) printf("%d ", d[i][j]); printf("\n"); } printf("%d", d[m-1][n-1]); return 0; }