#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
const long long INF = 2e9;
const long long MOD = 1e9 + 7;
const long long MB = 20;
void solve() {
  string s;
  cin >> s;
  vector<long long> c(200);
  for (long long i : s) c[i]++;
  vector<long long> q;
  for (long long i = 'a'; i <= 'z'; i++) {
    if (c[i] % 2) {
      c[i]--;
      q.push_back(i);
    }
  }
  sort(q.begin(), q.end());
  for (long long i = 0; i < q.size() / 2; i++) {
    c[q[i]] += 2;
  }
  string ans = s;
  if (q.size() % 2) {
    ans[s.size() / 2] = (char)q[q.size() / 2];
  }
  queue<char> qq;
  for (long long i = 'a'; i <= 'z'; i++) {
    for (long long j = 0; j < c[i]; j++) {
      qq.push((char)i);
    }
  }
  for (long long i = 0, j = s.size() - 1; i < j; i++, j--) {
    ans[i] = qq.front();
    qq.pop();
    ans[j] = qq.front();
    qq.pop();
  }
  cout << ans;
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  cout.precision(12);
  solve();
}
