#include <bits/stdc++.h>
#define FOR(i, a, b) for(int i = (a); i <= (b); i++)
using namespace std;
string a, b;
int n, m;
void Solve(){
vector<vector<int> > F(n+1, vector<int>(m+1, 0));
string res = "";
FOR(i, 1, n)
FOR(j, 1, m)
if (a[i] == b[j]) F[i][j] = F[i-1][j-1] + 1;
else F[i][j] = max(F[i-1][j], F[i][j-1]);
while(F[n][m] > 0){
if (a[n] == b[m]){
res = a[n] + res;
n--;
m--;
} else if (F[n][m] == F[n-1][m]) n--;
else if (F[n][m] == F[n][m-1]) m--;
}
cout<<res;
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin>>a;
b = a;
reverse(b.begin(), b.end());
n = (int)a.size();
m = (int)b.size();
a = "*" + a;
b = "*" + b;
Solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SKGksIGEsIGIpIGZvcihpbnQgaSA9IChhKTsgaSA8PSAoYik7IGkrKykKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cmluZyBhLCBiOwppbnQgbiwgbTsKCnZvaWQgU29sdmUoKXsKICAgdmVjdG9yPHZlY3RvcjxpbnQ+ID4gRihuKzEsIHZlY3RvcjxpbnQ+KG0rMSwgMCkpOwogICBzdHJpbmcgcmVzID0gIiI7CiAgIEZPUihpLCAxLCBuKQogICAgRk9SKGosIDEsIG0pCiAgICAgIGlmIChhW2ldID09IGJbal0pIEZbaV1bal0gPSBGW2ktMV1bai0xXSArIDE7CiAgICAgICBlbHNlIEZbaV1bal0gPSBtYXgoRltpLTFdW2pdLCBGW2ldW2otMV0pOwoKICAgd2hpbGUoRltuXVttXSA+IDApewogICAgICBpZiAoYVtuXSA9PSBiW21dKXsKICAgICAgICByZXMgPSBhW25dICsgcmVzOwogICAgICAgIG4tLTsKICAgICAgICBtLS07CiAgICAgIH0gZWxzZSBpZiAoRltuXVttXSA9PSBGW24tMV1bbV0pIG4tLTsKICAgICAgICAgZWxzZSBpZiAoRltuXVttXSA9PSBGW25dW20tMV0pIG0tLTsKICAgfQogICBjb3V0PDxyZXM7Cn0KCnNpZ25lZCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOyAgICBjb3V0LnRpZShOVUxMKTsKCiAgICBjaW4+PmE7CiAgICBiID0gYTsKICAgIHJldmVyc2UoYi5iZWdpbigpLCBiLmVuZCgpKTsKICAgIG4gPSAoaW50KWEuc2l6ZSgpOwogICAgbSA9IChpbnQpYi5zaXplKCk7CiAgICBhID0gIioiICsgYTsKICAgIGIgPSAiKiIgKyBiOwogICAgU29sdmUoKTsKICAgIHJldHVybiAwOwp9Cg==