#include <bits/stdc++.h>
using namespace std;
template <class T>
void rd(T &k) {
  char c = getchar();
  int f = 1;
  k = 0;
  while (c < '0' || c > '9') {
    if (c == '-') f *= -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    k = k * 10 + c - '0';
    c = getchar();
  }
  k *= f;
}
const int N = 2200;
int n, m, k, s, t;
char c[5005];
int f[N][1 << 12], sum[N];
int g[1 << 12];
int main() {
  cin >> c + 1;
  n = strlen(c + 1);
  for (k = 0, s = 1; s <= n; ++k, s <<= 1)
    ;
  --k;
  m = n + 1 - (1 << k);
  f[0][0] = 1;
  for (register int i = 1; i <= m; ++i) {
    char mx = 'z';
    memset(g, 0, sizeof(g));
    for (register int j = 0; j < (1 << k); ++j) {
      if (f[i - 1][j]) g[j] = 1;
      for (register int p = 0; p < k; ++p)
        if ((j & (1 << p)) && g[j ^ (1 << p)]) g[j] = 1;
      if (g[j]) mx = min(mx, c[i + j]);
    }
    cout << mx;
    for (register int j = 0; j < (1 << k); ++j)
      if (g[j] && c[j + i] == mx) f[i][j] = 1;
  }
}
