#include typedef long long ll; typedef unsigned long long ull; #define FOR(i,a,b) for(int (i)=(a);i<(b);i++) #define REP(i,n) FOR(i,0,n) #define RANGE(vec) (vec).begin(),(vec).end() using namespace std; class MrKsAnotherGift { public: void solve(void) { string s; cin>>s; int N = s.length(); string ans[2]; bool inserted = false; // 最初の挿入が必要なところでダメなら以降もダメなので // 挿入の施行は一回でよい // O(N) for (int i = 0; i < N/2; ++i) { if ( s[i] != s[N-1-i] ) { ans[0] = s.substr(0,i) + string(1,s[N-1-i]) + s.substr(i,N); ans[1] = s.substr(0,N-i) + string(1,s[i]) + s.substr(N-i,N); inserted = true; break; } } if ( !inserted ) { if ( N % 2 == 0 ) // 偶数長なら真ん中は何でもよい cout<<(s.substr(0,N/2) + string(1,'a') + s.substr(N/2,N))<solve(); delete obj; return 0; } #endif