import java.util.Set;
import java.util.HashSet;
import java.util.ArrayList;
import java.util.List;
public class MyClass {
public static void PrintSubstringWithKDistinctChars(String s, int k) {
List<String> list = new ArrayList<String>();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
String tmp = "" + ch;
Set<Character> set = new HashSet<Character>();
set.add(ch);
for (int j = i + 1; j < s.length(); j++) {
char next_ch = s.charAt(j);
set.add(next_ch);
tmp += next_ch;
if (tmp.length() >= k && set.size() == k) {
list.add(tmp);
}
}
}
System.out.println(list);
}
public static void main(String args[]) {
String str = "characters";
int k = 4;
PrintSubstringWithKDistinctChars(str, k);
}
}
/*
run:
[char, chara, charac, harac, aract, ract, acte, cter, ters]
*/