#include <bits/stdc++.h>
using namespace std;
int n, dp[1005][1005];
pair<int, int> trace[1005][1005];
string s, t;
bool maximize(int &x, const int &y) {
if (x < y) {
x = y;
return true;
}
return false;
}
int main() {
ios::sync_with_stdio(false); cin.tie(nullptr);
cin >> s;
n = s.size();
memset(dp, 0, sizeof(dp));
t = s; reverse(t.begin(), t.end());
s = " " + s; t + " " + t;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= n; ++j) {
dp[i][j] = dp[i - 1][j];
trace[i][j] = {i - 1, j};
if (maximize(dp[i][j], dp[i][j - 1]))
trace[i][j] = {i, j - 1};
if (s[i] == t[j])
if (maximize(dp[i][j], dp[i - 1][j - 1] + 1))
trace[i][j] = {i - 1, j - 1};
}
}
// cout << dp[n][n] << '\n';
string ans;
for (int x = n, y = n; x && y; tie(x, y) = trace[x][y])
if (s[x] == t[y]) ans += s[x];
cout << ans << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbiwgZHBbMTAwNV1bMTAwNV07CnBhaXI8aW50LCBpbnQ+IHRyYWNlWzEwMDVdWzEwMDVdOwpzdHJpbmcgcywgdDsKCmJvb2wgbWF4aW1pemUoaW50ICZ4LCBjb25zdCBpbnQgJnkpIHsKICAgIGlmICh4IDwgeSkgewogICAgICAgIHggPSB5OwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwp9CgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShudWxscHRyKTsKCWNpbiA+PiBzOwoJbiA9IHMuc2l6ZSgpOwoJbWVtc2V0KGRwLCAwLCBzaXplb2YoZHApKTsKICAgIHQgPSBzOyByZXZlcnNlKHQuYmVnaW4oKSwgdC5lbmQoKSk7CiAgICBzID0gIiAiICsgczsgdCArICIgIiArIHQ7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBuOyArK2opIHsKICAgICAgICAgICAgZHBbaV1bal0gPSBkcFtpIC0gMV1bal07CiAgICAgICAgICAgIHRyYWNlW2ldW2pdID0ge2kgLSAxLCBqfTsKCiAgICAgICAgICAgIGlmIChtYXhpbWl6ZShkcFtpXVtqXSwgZHBbaV1baiAtIDFdKSkKICAgICAgICAgICAgICAgIHRyYWNlW2ldW2pdID0ge2ksIGogLSAxfTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoc1tpXSA9PSB0W2pdKQogICAgICAgICAgICAgICAgaWYgKG1heGltaXplKGRwW2ldW2pdLCBkcFtpIC0gMV1baiAtIDFdICsgMSkpCiAgICAgICAgICAgICAgICAgICAgdHJhY2VbaV1bal0gPSB7aSAtIDEsIGogLSAxfTsKICAgICAgICB9CiAgICB9CgogICAgLy8gY291dCA8PCBkcFtuXVtuXSA8PCAnXG4nOwogICAgc3RyaW5nIGFuczsKICAgIGZvciAoaW50IHggPSBuLCB5ID0gbjsgeCAmJiB5OyB0aWUoeCwgeSkgPSB0cmFjZVt4XVt5XSkKICAgICAgICBpZiAoc1t4XSA9PSB0W3ldKSBhbnMgKz0gc1t4XTsKICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7CglyZXR1cm4gMDsKfQ==