#include <bits/stdc++.h>
using namespace std;
const int maxn = 5010;
int n, k, asize;
bool dp[maxn][maxn];
char s[maxn], ans[maxn];
int32_t main() {
  scanf("%s", s);
  n = strlen(s);
  while ((1 << (k + 1)) <= n) {
    k++;
  }
  asize = n - (1 << (k)) + 1;
  for (int size = 0; size < asize; size++) {
    ans[size] = 'z';
    for (int i = size; i < n - asize + size + 1; i++) {
      if (size == 0 || dp[i - 1][size]) ans[size] = min(ans[size], s[i]);
    }
    for (int i = size; i < n - asize + size + 1; i++) {
      int mask = i - size;
      if ((size == 0 || dp[i - 1][size]) && s[i] == ans[size]) {
        dp[i][size + 1] = 1;
      } else {
        for (int j = 0; j < k; j++) {
          if ((1 << j) <= i && ((mask >> j) & 1)) {
            dp[i][size + 1] |= dp[i - (1 << j)][size + 1];
          }
        }
      }
    }
  }
  printf("%s\n", ans);
}
