#include <bits/stdc++.h>
long long mod = 1000000007;
using namespace std;
int n;
long long powmod(long long a, long long b) {
  long long res = 1;
  a %= mod;
  for (; b; b >>= 1) {
    if (b & 1) res = res * a % mod;
    a = a * a % mod;
  }
  return res;
}
int a[1000001][3];
char lol[1000001];
char ror[1000001];
int bin(int beg, int end, int ch) {
  int mid;
  if (a[beg][ch] == a[end][ch]) return beg;
  int key = a[end][ch];
  while (beg < end) {
    mid = beg + (end - beg) / 2;
    if (a[mid][ch] >= key) {
      end = mid;
    } else
      beg = mid + 1;
  }
  return beg;
}
int main() {
  int i, j, fl, test;
  string s;
  cin >> s;
  int sz = s.size();
  for (i = 0; i < sz; i++) {
    a[i][s[i] - 'a']++;
    if (i) {
      for (j = 0; j < 3; j++) a[i][j] += a[i - 1][j];
    }
  }
  int l = 0;
  int r = sz - 1;
  int len = 0;
  int lx = 0, rx = 0;
  while (l <= r) {
    if (l == r) {
      lol[lx] = s[l];
      len++;
      lx++;
      break;
    }
    int choice1 = bin(l, r, s[l] - 'a');
    int choice2 = bin(l + 1, r, s[l + 1] - 'a');
    if (choice2 > choice1) {
      l++;
      continue;
    }
    lol[lx] = s[l];
    ror[rx] = s[l];
    lx++, rx++;
    l++;
    r = choice1 - 1;
  }
  if ((lx + rx) >= sz / 2) {
    for (i = 0; i < lx; i++) {
      printf("%c", lol[i]);
    }
    for (i = rx - 1; i >= 0; i--) {
      printf("%c", ror[i]);
    }
  } else
    printf("IMPOSSIBLE\n");
  return 0;
}
