#include <iostream>
#include <string>

std::string longest_k_substring(std::string s, int k) {
	int kk, start = 0, end, slen, maxlen = 0, saveStart;
	int count[256] = {0};
	slen = s.size();
	if (k == 0) return "";
	
	// find the longest prefix that contains <= k different characters
	for (end = 0, kk = 0; end < slen; ++end) {
		char c = s[end];
		if (++count[c] == 1) 	// new character
		  if (++kk > k) break;
	}
	
	while (true) {
		if (end - start > maxlen) {
			maxlen = end - start;
			saveStart = start;
		}
		if (end == slen) return s.substr(saveStart, maxlen);
	
		// increase start until s[start -> end] contains exactly k different characters
		while (--count[s[start++]]);
		// increase end until we reach a new character not currently in s[start -> end]
		while (++end < slen && ++count[s[end]] > 1);
	}
}

int main() {
	std::string s;
	int k;

	std::cin >> s >> k;
	std::cout << longest_k_substring(s, k);

	return 0;
}