using System;
using System.Collections.Generic;
public class Program
{
public static void PrintSubstringWithKDistinctChars(string s, int k) {
IList<string> list = new List<string>();
for (int i = 0; i < s.Length; i++) {
char ch = s[i];
string tmp = "" + ch;
ISet<char> set = new HashSet<char>();
set.Add(ch);
for (int j = i + 1; j < s.Length; j++) {
char next_ch = s[j];
set.Add(next_ch);
tmp += next_ch;
if (tmp.Length >= k && set.Count == k) {
list.Add(tmp);
}
}
}
Console.WriteLine(string.Join(", ", 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
*/