import sys

read = sys.stdin.buffer.read

readline = sys.stdin.buffer.readline

readlines = sys.stdin.buffer.readlines

sys.setrecursionlimit(1000000)



def main():

    s = readline().rstrip().decode()

    K = int(readline())

    #sに含まれる文字を一文字ずつ抽出する.

    #ここで抽出した文字を組み合わせて辞書順に文字列を構成していく

    #K<=5だから高々26^5個の文字列を構成することになる

    l = sorted(list(set(s)))

    #cnd:=構成した文字列を辞書順に格納するリスト

    cnd = []

    #f(sub):=subから構成可能なK文字以下のSの部分文字列を構成する関数

    def f(sub):

        cnd.append(sub)

        if len(sub) < K: 

            #lから選んでsubに一文字追加する

            for i in l:

                nx = sub+i

                if nx in s:

                    f(nx)

    for i in l:

        f(i) 

    print((cnd[K-1]))

if __name__ == '__main__':

    main()

import sys

read = sys.stdin.buffer.read

readline = sys.stdin.buffer.readline

readlines = sys.stdin.buffer.readlines

sys.setrecursionlimit(1000000)



def main():

    s = readline().rstrip().decode()

    K = int(readline())

    #sに含まれる文字を一文字ずつ抽出する.

    #ここで抽出した文字を組み合わせて辞書順に文字列を構成していく

    #K<=5だから高々26^5個の文字列を構成することになる

    l = sorted(list(set(s)))

    #cnd:=構成した文字列を辞書順に格納するリスト

    cnd = []

    #f(sub):=subから構成可能なK文字以下のSの部分文字列を構成する関数

    def f(sub):

        cnd.append(sub)

        if len(sub) < K: 

            #lから選んでsubに一文字追加する

            for i in l:

                nx = sub+i

                if nx in s:

                    return f(nx)

    for i in l:

        f(i) 

    print((cnd[K-1]))

if __name__ == '__main__':

    main()

import sys

read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
sys.setrecursionlimit(1000000)


def main():
    s = readline().rstrip().decode()
    K = int(readline())
    # sに含まれる文字を一文字ずつ抽出する.
    # ここで抽出した文字を組み合わせて辞書順に文字列を構成していく
    # K<=5だから高々26^5個の文字列を構成することになる
    l = sorted(list(set(s)))
    # cnd:=構成した文字列を辞書順に格納するリスト
    cnd = []
    # f(sub):=subから構成可能なK文字以下のSの部分文字列を構成する関数
    def f(sub):
        cnd.append(sub)
        if len(sub) < K:
            # lから選んでsubに一文字追加する
            for i in l:
                nx = sub + i
                if nx in s:
                    f(nx)

    for i in l:
        f(i)
    print((cnd[K - 1]))


if __name__ == "__main__":
    main()

import sys

read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
sys.setrecursionlimit(1000000)


def main():
    s = readline().rstrip().decode()
    K = int(readline())
    # sに含まれる文字を一文字ずつ抽出する.
    # ここで抽出した文字を組み合わせて辞書順に文字列を構成していく
    # K<=5だから高々26^5個の文字列を構成することになる
    l = sorted(list(set(s)))
    # cnd:=構成した文字列を辞書順に格納するリスト
    cnd = []
    # f(sub):=subから構成可能なK文字以下のSの部分文字列を構成する関数
    def f(sub):
        cnd.append(sub)
        if len(sub) < K:
            # lから選んでsubに一文字追加する
            for i in l:
                nx = sub + i
                if nx in s:
                    return f(nx)

    for i in l:
        f(i)
    print((cnd[K - 1]))


if __name__ == "__main__":
    main()

-                    f(nx) +                    return f(nx)