#include<bits/stdc++.h>
#define S string
#define nl "\n"
#define speed ios_base::sync_with_stdio(false) , cin.tie(NULL) , cout.tie(NULL);
using namespace std;
vector<pair<int, int> >d={
    {0,-1},{0,1},{1,0},{-1,0}
};
vector<char>dd={'L', 'R' , 'D' , 'U'};
const int MOD = 1e9 + 7;
const int N = 1001;
   int mem[N][N];   bool vis[N][N];
 
int main() {
 
    speed
 
  freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
 
 
    S s;
    while (getline(cin, s)) {
        if (s.empty()) {
            break;
        }
        vector<vector<S>>memo(N , vector<S>(N , ""));
         memset(mem , -1 , sizeof(mem));
        memset(vis , 0 , sizeof(vis));
 
        function <int(int , int )> dp =[&](int i , int t)->int {
            if (i > t)return 0;
            int&res=mem[i][t];
            if (~res)return res;
              res = 0;
            if ( i == t ) return  res = 1;
            if ( s[i] == s[t]) {
                res =  max(res ,dp( i + 1 , t - 1) + 2);
            }
            if (s[i] != s[t]) res = max({res , dp(i + 1 , t)  , dp(i , t - 1)} );
            return res;
        };
 
        function <S(int , int )> bld =[&](int i , int t)->S {
            if ( vis[i][t]) return memo[i][t];
            vis[i][t] = 1 ;
            if (i > t)return "";
 
            int t1 =dp(i + 1 , t)  ,  t2 = dp(i , t - 1), t3 = 0;   if (s[i] == s[t]) t3 =dp( i + 1 , t - 1 ) + 2;
            int a = dp(i , t) ;
            S &ans = memo[i][t];
             ans  = "{" ;
            if ( i == t)    return s.substr( i , 1)   ;
            if ( t3 == a) {
                ans  = min (ans , s.substr( i , 1) + bld(i + 1 , t - 1 ) + s.substr( i , 1));
            }
 
             if (t2 == a)ans = min ( ans , bld(i , t - 1) );
             if (t1 == a) ans = min ( ans , bld(i + 1 , t ) );
 
            return ans ;
        };
 
 
        dp(0 , s.size()-1 );
        cout<<bld(0 , s.size()-1) << nl;
    }
    return 0;
}
				I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBTIHN0cmluZwojZGVmaW5lIG5sICJcbiIKI2RlZmluZSBzcGVlZCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKSAsIGNpbi50aWUoTlVMTCkgLCBjb3V0LnRpZShOVUxMKTsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdmVjdG9yPHBhaXI8aW50LCBpbnQ+ID5kPXsKICAgIHswLC0xfSx7MCwxfSx7MSwwfSx7LTEsMH0KfTsKdmVjdG9yPGNoYXI+ZGQ9eydMJywgJ1InICwgJ0QnICwgJ1UnfTsKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7CmNvbnN0IGludCBOID0gMTAwMTsKICAgaW50IG1lbVtOXVtOXTsgICBib29sIHZpc1tOXVtOXTsKCmludCBtYWluKCkgewoKICAgIHNwZWVkCgogIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwogICAgZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKCgogICAgUyBzOwogICAgd2hpbGUgKGdldGxpbmUoY2luLCBzKSkgewogICAgICAgIGlmIChzLmVtcHR5KCkpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHZlY3Rvcjx2ZWN0b3I8Uz4+bWVtbyhOICwgdmVjdG9yPFM+KE4gLCAiIikpOwogICAgICAgICBtZW1zZXQobWVtICwgLTEgLCBzaXplb2YobWVtKSk7CiAgICAgICAgbWVtc2V0KHZpcyAsIDAgLCBzaXplb2YodmlzKSk7CgogICAgICAgIGZ1bmN0aW9uIDxpbnQoaW50ICwgaW50ICk+IGRwID1bJl0oaW50IGkgLCBpbnQgdCktPmludCB7CiAgICAgICAgICAgIGlmIChpID4gdClyZXR1cm4gMDsKICAgICAgICAgICAgaW50JnJlcz1tZW1baV1bdF07CiAgICAgICAgICAgIGlmICh+cmVzKXJldHVybiByZXM7CiAgICAgICAgICAgICAgcmVzID0gMDsKICAgICAgICAgICAgaWYgKCBpID09IHQgKSByZXR1cm4gIHJlcyA9IDE7CiAgICAgICAgICAgIGlmICggc1tpXSA9PSBzW3RdKSB7CiAgICAgICAgICAgICAgICByZXMgPSAgbWF4KHJlcyAsZHAoIGkgKyAxICwgdCAtIDEpICsgMik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHNbaV0gIT0gc1t0XSkgcmVzID0gbWF4KHtyZXMgLCBkcChpICsgMSAsIHQpICAsIGRwKGkgLCB0IC0gMSl9ICk7CiAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgfTsKCiAgICAgICAgZnVuY3Rpb24gPFMoaW50ICwgaW50ICk+IGJsZCA9WyZdKGludCBpICwgaW50IHQpLT5TIHsKICAgICAgICAgICAgaWYgKCB2aXNbaV1bdF0pIHJldHVybiBtZW1vW2ldW3RdOwogICAgICAgICAgICB2aXNbaV1bdF0gPSAxIDsKICAgICAgICAgICAgaWYgKGkgPiB0KXJldHVybiAiIjsKCiAgICAgICAgICAgIGludCB0MSA9ZHAoaSArIDEgLCB0KSAgLCAgdDIgPSBkcChpICwgdCAtIDEpLCB0MyA9IDA7ICAgaWYgKHNbaV0gPT0gc1t0XSkgdDMgPWRwKCBpICsgMSAsIHQgLSAxICkgKyAyOwogICAgICAgICAgICBpbnQgYSA9IGRwKGkgLCB0KSA7CiAgICAgICAgICAgIFMgJmFucyA9IG1lbW9baV1bdF07CiAgICAgICAgICAgICBhbnMgID0gInsiIDsKICAgICAgICAgICAgaWYgKCBpID09IHQpICAgIHJldHVybiBzLnN1YnN0ciggaSAsIDEpICAgOwogICAgICAgICAgICBpZiAoIHQzID09IGEpIHsKICAgICAgICAgICAgICAgIGFucyAgPSBtaW4gKGFucyAsIHMuc3Vic3RyKCBpICwgMSkgKyBibGQoaSArIDEgLCB0IC0gMSApICsgcy5zdWJzdHIoIGkgLCAxKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICBpZiAodDIgPT0gYSlhbnMgPSBtaW4gKCBhbnMgLCBibGQoaSAsIHQgLSAxKSApOwogICAgICAgICAgICAgaWYgKHQxID09IGEpIGFucyA9IG1pbiAoIGFucyAsIGJsZChpICsgMSAsIHQgKSApOwoKICAgICAgICAgICAgcmV0dXJuIGFucyA7CiAgICAgICAgfTsKCgogICAgICAgIGRwKDAgLCBzLnNpemUoKS0xICk7CiAgICAgICAgY291dDw8YmxkKDAgLCBzLnNpemUoKS0xKSA8PCBubDsKICAgIH0KICAgIHJldHVybiAwOwp9