#include <bits/stdc++.h>
using namespace std;
template <typename T, typename U>
inline void smin(T &a, const U &b) {
  if (a > b) a = b;
}
template <typename T, typename U>
inline void smax(T &a, const U &b) {
  if (a < b) a = b;
}
const int NN = 1000111;
char s[NN];
char ans[NN], res[NN];
int na, nr;
void solve(int st, int ed) {
  if (st > ed) return;
  if (abs(ed - st) <= 1) {
    ans[na++] = s[st];
    return;
  }
  if (s[st] == s[ed]) {
    ans[na++] = res[nr++] = s[st];
    solve(st + 1, ed - 1);
    return;
  }
  if (s[st] == s[ed - 1]) {
    ans[na++] = res[nr++] = s[st];
    return solve(st + 1, ed - 2);
  }
  if (s[st + 1] == s[ed]) {
    ans[na++] = res[nr++] = s[ed];
    return solve(st + 2, ed - 1);
  }
  if (ed - st == 2) {
    ans[na++] = s[st];
    return;
  }
  return solve(st + 1, ed - 1);
}
int main() {
  scanf("%s", s);
  solve(0, strlen(s) - 1);
  printf("%s", ans);
  reverse(res, res + nr);
  puts(res);
}
