func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 5000;   const int B = 33;   const int P = 1e6 + 3;   string s[2];   int ans, Max[2][maxn], dp1[maxn][maxn], dp2[maxn][maxn], dp3[maxn][maxn];   inline void make(const string &x, const string &y, int dp[maxn][maxn]) {     for (int i = 0; i < x.size(); i++)       for (int j = 0; j < y.size(); j++)         if (x[i] == y[j]) dp[i][j] = 1 + (i && j ? dp[i - 1][j - 1] : 0);   }   int main() {     ios_base ::sync_with_stdio(0);     for (int i = 0; i < 2; i++) cin >> s[i];     make(s[0], s[0], dp1);     make(s[0], s[1], dp2);     make(s[1], s[1], dp3);     for (int i = 0; i < s[0].size(); i++)       for (int j = 0; j < s[0].size(); j++)         if (i != j) Max[0][i] = max(Max[0][i], dp1[i][j]);     for (int i = 0; i < s[1].size(); i++)       for (int j = 0; j < s[1].size(); j++)         if (i != j) Max[1][i] = max(Max[1][i], dp3[i][j]);     ans = INT_MAX;     for (int i = 0; i < s[0].size(); i++)       for (int j = 0; j < s[1].size(); j++)         if (dp2[i][j] > Max[0][i] && dp2[i][j] > Max[1][j])           ans = min(ans, max(Max[0][i], Max[1][j]) + 1);     cout << (ans == INT_MAX ? -1 : ans) << endl;   }   