#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("Ofast")
#pragma GCC optimize("no-stack-protector")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,popcnt,abm,mmx,tune=native")
#pragma GCC optimize("fast-math")
#pragma warning(disable : 4996)
const long long N = 55;
const long long INF = 1e15;
long long TN = 1;
string s;
string tmp;
map<char, long long> cnt;
void solve() {
  cin >> s;
  for (auto i : s) {
    cnt[i]++;
  }
  for (auto i : cnt) {
    if (i.second % 2) {
      tmp += i.first;
    }
  }
  for (long long i = 0; i < (long long)(tmp).size() / 2; i++) {
    cnt[tmp[i]]++;
    cnt[tmp[(long long)(tmp).size() - i - 1]]--;
  }
  string ans = "";
  char c = '#';
  for (auto i : cnt) {
    for (long long j = 0; j < i.second / 2; j++) {
      ans += i.first;
    }
    if (i.second % 2) {
      c = i.first;
    }
  }
  cout << ans;
  if (c != '#') {
    cout << c;
  }
  reverse((ans).begin(), (ans).end());
  cout << ans << "\n";
  return;
}
signed main() {
  while (TN--) solve();
  return 0;
}
