#include <bits/stdc++.h>
using namespace std;
struct SegTree {
int n;
vector<char> tree;
SegTree(const string &s) {
int sz = s.size();
n = 1;
while (n < sz) n <<= 1;
tree.assign(2 * n, char(127));
for (int i = 0; i < sz; i++) {
tree[n + i] = s[i];
}
for (int i = n - 1; i > 0; i--) {
tree[i] = min(tree[2 * i], tree[2 * i + 1]);
}
}
char range_min(int l, int r) {
char res = char(127);
l += n;
r += n;
while (l < r) {
if (l & 1) res = min(res, tree[l++]);
if (r & 1) res = min(res, tree[--r]);
l >>= 1;
r >>= 1;
}
return res;
}
};
int main() {
string S;
cin >> S;
int N = S.size();
SegTree seg(S);
vector<char> st;
string ans;
for (int i = 0; i < N; i++) {
st.push_back(S[i]);
char min_suffix = (i + 1 < N) ? seg.range_min(i + 1, N) : char(127);
while (!st.empty() && st.back() <= min_suffix) {
ans += st.back();
st.pop_back();
}
}
cout << ans << "\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgU2VnVHJlZSB7CiAgICBpbnQgbjsKICAgIHZlY3RvcjxjaGFyPiB0cmVlOwoKICAgIFNlZ1RyZWUoY29uc3Qgc3RyaW5nICZzKSB7CiAgICAgICAgaW50IHN6ID0gcy5zaXplKCk7CiAgICAgICAgbiA9IDE7CiAgICAgICAgd2hpbGUgKG4gPCBzeikgbiA8PD0gMTsKICAgICAgICB0cmVlLmFzc2lnbigyICogbiwgY2hhcigxMjcpKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHN6OyBpKyspIHsKICAgICAgICAgICAgdHJlZVtuICsgaV0gPSBzW2ldOwogICAgICAgIH0KICAgICAgICBmb3IgKGludCBpID0gbiAtIDE7IGkgPiAwOyBpLS0pIHsKICAgICAgICAgICAgdHJlZVtpXSA9IG1pbih0cmVlWzIgKiBpXSwgdHJlZVsyICogaSArIDFdKTsKICAgICAgICB9CiAgICB9CgogICAgY2hhciByYW5nZV9taW4oaW50IGwsIGludCByKSB7CiAgICAgICAgY2hhciByZXMgPSBjaGFyKDEyNyk7CiAgICAgICAgbCArPSBuOwogICAgICAgIHIgKz0gbjsKICAgICAgICB3aGlsZSAobCA8IHIpIHsKICAgICAgICAgICAgaWYgKGwgJiAxKSByZXMgPSBtaW4ocmVzLCB0cmVlW2wrK10pOwogICAgICAgICAgICBpZiAociAmIDEpIHJlcyA9IG1pbihyZXMsIHRyZWVbLS1yXSk7CiAgICAgICAgICAgIGwgPj49IDE7CiAgICAgICAgICAgIHIgPj49IDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXM7CiAgICB9Cn07CgppbnQgbWFpbigpIHsKICAgIHN0cmluZyBTOwogICAgY2luID4+IFM7CiAgICBpbnQgTiA9IFMuc2l6ZSgpOwoKICAgIFNlZ1RyZWUgc2VnKFMpOwoKICAgIHZlY3RvcjxjaGFyPiBzdDsKICAgIHN0cmluZyBhbnM7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKICAgICAgICBzdC5wdXNoX2JhY2soU1tpXSk7CiAgICAgICAgY2hhciBtaW5fc3VmZml4ID0gKGkgKyAxIDwgTikgPyBzZWcucmFuZ2VfbWluKGkgKyAxLCBOKSA6IGNoYXIoMTI3KTsKICAgICAgICB3aGlsZSAoIXN0LmVtcHR5KCkgJiYgc3QuYmFjaygpIDw9IG1pbl9zdWZmaXgpIHsKICAgICAgICAgICAgYW5zICs9IHN0LmJhY2soKTsKICAgICAgICAgICAgc3QucG9wX2JhY2soKTsKICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCBhbnMgPDwgIlxuIjsKfQo=