class Solution {
public:
    string change(string&b)
    {
        string res="&#";
        for(auto x:b)res=res+x+'#';
        return res+'*';
    }
    int getLongestPalindrome(string A) {
        string temp=change(A);
        vector<int>dp(temp.length()+1,0);
        int mp=0,idd=0,res=0;
        for(int i=0;i<temp.length();i++)
        {
            dp[i]=mp>i?min(dp[2*idd-i],mp-i):1;
            for(;temp[i+dp[i]]==temp[i-dp[i]];dp[i]++);
            if(mp<i+dp[i])mp=i+dp[i],idd=i;
            res=max(res,dp[i]);
        }
        return res-1;
    }
};