C++ EASY RECURSION + BACKTRACKING
```\nclass Solution {\npublic:\n    int ans =-1;\n    bool ispal(vector&a)\n    {\n        int n=a.size();\n        for(int i=0;i&s1,vector\&s2,int i)\n    {\n 
```\nclass Solution {\npublic:\n    int ans =-1;\n    bool ispal(vector<char>&a)\n    {\n        int n=a.size();\n        for(int i=0;i<n/2;i++)\n        {\n            if(a[i] != a[n-1-i])return false;\n        }\n        return true;\n    }\n    void solve(string s,vector<char>&s1,vector<char>&s2,int i)\n    {\n        // base case \n        if(i >= s.size())\n        {\n            if(ispal(s1) && ispal(s2))\n            {\n             int p = (s1.size()*s2.size());\n                if(ans < p)ans=p;\n                return ;\n            }\n            else\n                return   ;\n        }\n        solve(s,s1,s2,i+1);\n        \n        s1.push_back(s[i]);\n        solve(s,s1,s2,i+1);\n        s1.pop_back();\n        \n         s2.push_back(s[i]);\n        solve(s,s1,s2,i+1);\n        s2.pop_back();\n    }\n    int maxProduct(string s) {\n        vector<char>s1,s2 ; \n        solve(s,s1,s2,0);\n        return ans;\n    }\n};
['Backtracking']