#include<bits/stdc++.h>
#define FILE "read"
#define MAXN 1000010
using namespace std;
int n,now(1),cnt(1),id[MAXN],c[MAXN],mx[MAXN],Right[MAXN],f[MAXN],parent[MAXN],tr[MAXN][27];
char ch[MAXN];
inline int read(){
int x=0,f=1; char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-1; ch=getchar();}
while(isdigit(ch)) {x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
void extend(int x){
int np=++cnt,p=now; Right[np]=1;
mx[np]=mx[p]+1; now=np;
while(p&&!tr[p][x]) tr[p][x]=np,p=parent[p];
if(!p) parent[np]=1;
else{
int q=tr[p][x];
if(mx[q]==mx[p]+1) parent[np]=q;
else{
int nq=++cnt; mx[nq]=mx[p]+1;
memcpy(tr[nq],tr[q],sizeof(tr[q]));
parent[nq]=parent[q]; parent[q]=parent[np]=nq;
while(p&&tr[p][x]==q) tr[p][x]=nq,p=parent[p];
}
}
}
void topsort(){
for(int i=1;i<=cnt;++i) c[mx[i]]++;
for(int i=1;i<=n;++i) c[i]+=c[i-1];
for(int i=1;i<=cnt;++i) id[c[mx[i]]--]=i;
}
int main(){
freopen(FILE".in","r",stdin);
freopen(FILE".out","w",stdout);
scanf("%s",ch+1); n=strlen(ch+1);
for(int i=1;i<=n;++i) extend(ch[i]-'a');
topsort();int opt=read(),len=read();
for(int i=cnt;i;--i){
if(opt==1) Right[parent[id[i]]]+=Right[id[i]];
else Right[id[i]]=1;
}
Right[1]=0; now=1;
for(int i=cnt;i;--i){
f[id[i]]=Right[id[i]];
for(int j=0;j<26;++j) f[id[i]]+=f[tr[id[i]][j]];
}
if(len>f[1]) {puts("-1"); return 0;}
while(len>Right[now]){
len-=Right[now];
for(int i=0;i<26;++i)if(tr[now][i]){
if(len<=f[tr[now][i]]){
putchar('a'+i);
now=tr[now][i]; break;
}
else len-=f[tr[now][i]];
}
}
return 0;
}