func_code_string: #include <bits/stdc++.h>   using namespace std;   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     string s1, s2;     cin >> s1 >> s2;     int n = s1.size();     int m = s2.size();     pair<pair<int, int>, pair<int, char> > parent[n + 1][m + 1][205];     int dp[n + 5][m + 5][205];     for (int i = 0; i <= n; i++) {       for (int j = 0; j <= m; j++) {         for (int bal = 0; bal <= 200; bal++) {           dp[i][j][bal] = 600;         }       }     }     dp[0][0][0] = 0;     for (int i = 0; i <= n; i++) {       for (int j = 0; j <= m; j++) {         for (int bal = 0; bal <= 200; bal++) {           if (dp[i][j][bal] == 600) continue;           int newI = i + (i < n && s1[i] ==  ( );           int newJ = j + (j < m && s2[j] ==  ( );           if (bal + 1 < 205 && dp[newI][newJ][bal + 1] > dp[i][j][bal] + 1) {             dp[newI][newJ][bal + 1] = dp[i][j][bal] + 1;             parent[newI][newJ][bal + 1] =                 make_pair(make_pair(i, j), make_pair(bal,  ( ));           }           newI = i + (i < n && s1[i] ==  ) );           newJ = j + (j < m && s2[j] ==  ) );           if (bal > 0 && dp[newI][newJ][bal - 1] > dp[i][j][bal] + 1) {             dp[newI][newJ][bal - 1] = dp[i][j][bal] + 1;             parent[newI][newJ][bal - 1] =                 make_pair(make_pair(i, j), make_pair(bal,  ) ));           }         }       }     }     int cBal = 0;     for (int bal = 0; bal <= 200; bal++) {       if (dp[n][m][bal] + bal < dp[n][m][cBal] + cBal) {         cBal = bal;       }     }     int ci = n, cj = m;     string res = string(cBal,  ) );     while (ci > 0 || cj > 0 || cBal != 0) {       int nci = parent[ci][cj][cBal].first.first;       int ncj = parent[ci][cj][cBal].first.second;       int ncBal = parent[ci][cj][cBal].second.first;       res += parent[ci][cj][cBal].second.second;       ci = nci;       cj = ncj;       cBal = ncBal;     }     reverse(res.begin(), res.end());     cout << res << endl;     return 0;   }   