func_code_string: #include <bits/stdc++.h>   #pragma warning(disable : 4996)   using namespace std;   int main() {     ios_base::sync_with_stdio(0);     string s, t;     cin >> s >> t;     int n = s.size(), m = t.size();     vector<vector<int> > f(n + 1);     vector<vector<int> > what(n + 1);     vector<vector<pair<int, int> > > from(n + 1);     for (int i = 0; i < int((f).size()); i++)       f[i].resize(m + 1), what[i].resize(m + 1), from[i].resize(m + 1);     for (int i = 0; i <= n; ++i)       for (int j = 0; j <= m; ++j) {         if (i == 0 && j == 0) continue;         int a, b, c, d;         a = b = c = d = 1000000000;         if (i - 1 >= 0 && j - 1 >= 0 && s[i - 1] == t[j - 1]) a = f[i - 1][j - 1];         if (i - 1 >= 0) b = f[i - 1][j] + 1;         if (j - 1 >= 0) c = f[i][j - 1] + 1;         if (i - 1 >= 0 && j - 1 >= 0) d = f[i - 1][j - 1] + 1;         int mn = min(min(a, b), min(c, d));         if (mn == b)           what[i][j] = 1, from[i][j] = make_pair(i - 1, j);         else if (mn == c)           what[i][j] = 2, from[i][j] = make_pair(i, j - 1);         else if (mn == d)           what[i][j] = 3, from[i][j] = make_pair(i - 1, j - 1);         else           from[i][j] = make_pair(i - 1, j - 1);         f[i][j] = mn;       }     cout << f[n][m] << endl;     int i = n, j = m;     while (i != 0 || j != 0) {       if (what[i][j] == 1)         cout <<  DELETE   << i << endl;       else if (what[i][j] == 2)         cout <<  INSERT   << i + 1 <<     << t[j - 1] << endl;       else if (what[i][j] == 3)         cout <<  REPLACE   << i <<     << t[j - 1] << endl;       pair<int, int> h = from[i][j];       i = h.first;       j = h.second;     }     return 0;   }   