#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;
const int mod = 998244353;
char s[maxn];
int l[3], r[3];
int a[3];
bool cmp(int a, int b) { return r[a] - l[a] > r[b] - l[b]; }
vector<int> pre, suf;
int main() {
  scanf("%s", s);
  int n = strlen(s);
  for (int i = 0; i < 3; ++i) l[i] = n, r[i] = 0;
  for (int i = 0; i < n; ++i) {
    l[s[i] - 'a'] = min(l[s[i] - 'a'], i);
    r[s[i] - 'a'] = max(r[s[i] - 'a'], i);
  }
  iota(a, a + 3, 0);
  sort(a, a + 3, cmp);
  int L = l[a[0]], R = r[a[0]];
  pre.push_back(L);
  suf.push_back(R);
  while (L < R) {
    if (s[L + 1] == s[R - 1])
      L += 1, R -= 1;
    else if (s[L + 1] == s[R - 2])
      L += 1, R -= 2;
    else if (s[L + 2] == s[R - 1])
      L += 2, R -= 1;
    else
      L += 2, R -= 2;
    pre.push_back(L);
    suf.push_back(R);
  }
  if (pre.back() == suf.back()) pre.pop_back();
  for (auto& u : pre) printf("%c", s[u]);
  for (auto u = suf.rbegin(); u != suf.rend(); ++u) {
    printf("%c", s[*u]);
  }
  return 0;
}
