#include <bits/stdc++.h>
using namespace std;
long long power(long long a, long long b) {
  long long res = 1;
  while (b) {
    if (b & 1) res = (res % 998244353 * a % 998244353) % 998244353;
    b /= 2;
    a = (a % 998244353 * a % 998244353) % 998244353;
  }
  return res % 998244353;
}
long long dp[1005][1005];
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  string s;
  cin >> s;
  long long k = s.size();
  long long p1 = (s.size()) / 2;
  deque<char> dq;
  char p = s[k / 2];
  dq.push_front(p);
  int i = k / 2 - 1;
  int j = k / 2 + 1;
  long long ca = 0, cb = 0, cc = 0;
  long long ca1 = 0, cb1 = 0, cc1 = 0;
  while (i >= 0 || j < k) {
    if (s[i] == 'a') ca++;
    if (s[i] == 'b') cb++;
    if (s[i] == 'c') cc++;
    if (s[j] == 'a') ca1++;
    if (s[j] == 'b') cb1++;
    if (s[j] == 'c') cc1++;
    if (ca && ca1) {
      long long h = min(ca, ca1);
      ca -= h;
      ca1 -= h;
      for (int l = 0; l < h; l++) dq.push_front('a');
      for (int l = 0; l < h; l++) dq.push_back('a');
      cb = 0;
      cb = 0;
      cb1 = 0;
      cc = 0;
      cc1 = 0;
    }
    if (cb && cb1) {
      long long h = min(cb, cb1);
      cb -= h;
      cb1 -= h;
      for (int l = 0; l < h; l++) dq.push_front('b');
      for (int l = 0; l < h; l++) dq.push_back('b');
      ca = 0;
      ca1 = 0;
      cc = 0;
      cc1 = 0;
    }
    if (cc && cc1) {
      long long h = min(cc, cc1);
      cc -= h;
      cc1 -= h;
      for (int l = 0; l < h; l++) dq.push_front('c');
      for (int l = 0; l < h; l++) dq.push_back('c');
      ca = 0;
      ca1 = 0;
      cb = 0;
      cb1 = 0;
    }
    if (i >= 0) i--;
    if (j < k) j++;
  }
  if (dq.size() >= p1) {
    while (dq.size()) {
      cout << dq.front();
      dq.pop_front();
    }
  } else
    cout << "IMPOSSIBLE" << endl;
}
