func_code_string: #include <bits/stdc++.h>   using namespace std;   char s[5005];   int n, dp[5005][5];   const int inf = 1e7 + 5;   int go(int id, int need) {     if (id == n) return 0;     if (dp[id][need] != -1) return dp[id][need];     int ans = 0;     if (need == 1) {       if (s[id] ==  a )         ans = max(1 + go(id + 1, 1), 1 + go(id + 1, 2));       else         ans = max(go(id, 2), go(id + 1, 1));     } else if (need == 2) {       if (s[id] ==  a )         ans = max(go(id, 3), go(id + 1, 2));       else         ans = max(1 + go(id + 1, 2), 1 + go(id + 1, 3));     } else {       if (s[id] ==  a )         ans = 1 + go(id + 1, 3);       else         ans = go(id + 1, 3);     }     return dp[id][need] = ans;   }   int main() {     scanf(  %s , s);     n = strlen(s);     memset(dp, -1, sizeof(dp));     printf( %d n , go(0, 1));   }   