A subsequence of a string S is a string that can be obtained by deleting zero or more characters from S without changing the order of the remaining characters.
For example, arc, artistic and (an empty string) are all subsequences of artistic; abc and ci are not.
You are given a string A consisting of lowercase English letters.
Find the shortest string among the strings consisting of lowercase English letters that are not subsequences of A.
If there are more than one such string, find the lexicographically smallest one among them.

-----Constraints-----
 - 1 \leq |A| \leq 2 \times 10^5
 - A consists of lowercase English letters.

-----Input-----
Input is given from Standard Input in the following format:
A

-----Output-----
Print the lexicographically smallest string among the shortest strings consisting of lowercase English letters that are not subsequences of A.

-----Sample Input-----
atcoderregularcontest

-----Sample Output-----
b

The string atcoderregularcontest contains a as a subsequence, but not b.

```python

USER_FILENAME = "<user_code>"
import sys, json, builtins
import math, heapq, bisect, itertools, functools, collections, statistics, fractions, decimal, operator, array, random, re, string, os, pathlib
try:
    import resource as _res
except Exception:
    _res = None
from collections import Counter, defaultdict, deque, OrderedDict
from functools import lru_cache, reduce
from itertools import accumulate, permutations, combinations, product
from math import gcd, ceil, floor, sqrt
from decimal import Decimal
try:
    from typing import *
except Exception:
    pass
try:
    sys.setrecursionlimit(1_000_000)
except Exception:
    pass
try:
    import site as _site
    try:
        _sys_sites = _site.getsitepackages() if hasattr(_site, "getsitepackages") else []
        for _p in _sys_sites:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
    try:
        _usp = _site.getusersitepackages()
        if isinstance(_usp, str):
            _usp = [_usp]
        for _p in _usp:
            if _p and _p not in sys.path:
                sys.path.append(_p)
    except Exception:
        pass
except Exception:
    pass

ns = {"__name__": "__main__"}
for _k, _v in list(globals().items()):
    if not _k.startswith("_"):
        ns[_k] = _v
_CODE = '\n"""\nWriter: SPD_9X2\nhttps://atcoder.jp/contests/arc081/tasks/arc081_c\n\n1文字がありうるのは、出てない文字があるとき\n2文字がありうるのは、全ての文字が1度出たのち、もう一度すべての文字が1度現れてない場合\nつまり答えの文字数はこの方法で分かる\n\nでは辞書順最小のものは？\nk文字であることがわかっていたとする。\nこの時、どの文字も最低k-1回出現している\n最後の文字は、k回出現してない文字の内、辞書順最小の物\n最後から1番目は、k-1回目の出現の後、最後の文字が出ていない者\n最後から2番目は、\n\nabcの3文字しかないとする\nabababababcab\n\n→この時、求めるのは、?cで、?はc最後に出現するcよりも前に存在しないk-1文字の辞書順最小\n\nabcabcab\n→??c\n→最後の出現するc以前=abcab以前で存在しない2文字\n→?cc\n→abで存在しない1文字\n→ccc\n\nacbaccbac\n→結局再帰的に解ける\n→出現回数が最小の文字のうち、辞書順最小の物を答えの最後の文字から決めていき、その文字が最後の出現したind\nより前に関して、同じ問題を解く\n\nあとはどうやって計算量を削減するか\nその時点で、どの文字が何度出たか、最後の出現したindexはどこか、を記録して置いて再帰的に解く\n\n→方針は合ってる？けど実装してるのが違うよ！\n保存しておくのは、全ての文字が何回出揃ったか、とその後どの文字が出ているか。\n&各文字が最後にどこで出たか。\n\nあれー？\naaaaaabbbbbbc\n\n→問題は、必ずしも後ろから最適なのを選んで行けばいいわけではなかったこと\n→これはあくまで、後ろから見て辞書順最小でしかない…あれまさか？\n→正解しちゃったー？？？\n"""\n\nA = list(input())\nA.reverse()\n\nalp = "abcdefghijklmnopqrstuvwxyz"\nalpdic = {}\nfor i in range(26):\n    alpdic[alp[i]] = i\n\nallcol = [0] * (len(A)+1)\napnum =  [ [0] * 26 for i in range(len(A)+1) ]\nlastap = [ [0] * 26 for i in range(len(A)+1) ]\n\nfor i in range(len(A)):\n\n    for j in range(26):\n        apnum[i+1][j] = apnum[i][j]\n        lastap[i+1][j] = lastap[i][j]\n        allcol[i+1] = allcol[i]\n\n    apnum[i+1][alpdic[A[i]]] |= 1\n    if 0 not in apnum[i+1]:\n        apnum[i+1] = [0] * 26\n        allcol[i+1] += 1\n    lastap[i+1][alpdic[A[i]]] = i+1\n\nanslen = allcol[-1]+1\nans = []\nnind = len(A)\n\nfor i in range(anslen):\n\n    #print ("".join(A[:nind]))\n\n    minind = 0\n    for j in range(26):\n        if apnum[nind][j] == 0:\n            minind = j\n            break\n    ans.append(alp[minind])\n\n    nind = lastap[nind][minind]-1\n\n#ans.reverse()\nprint ("".join(ans))'
_co = compile(_CODE, USER_FILENAME, "exec")
exec(_co, ns, ns)

```

Measured memory_bytes: 19737