#include <string>
#include <vector>
#include <set>
#include <iostream>
void PrintSubstringWithKDistinctChars(const std::string &s, int k) {
std::vector<std::string> substring;
int size = s.length();
for (int i = 0; i < size; i++) {
char ch = s[i];
std::string tmp = "";
tmp += ch;
std::set<char> st;
st.insert(ch);
for (int j = i + 1; j < size; j++) {
char next_ch = s[j];
st.insert(next_ch);
tmp += next_ch;
if (tmp.length() >= k && st.size() == k) {
substring.push_back(tmp);
}
}
}
for (auto const &sub: substring) {
std::cout << sub << " ";
}
}
int main()
{
std::string str = "characters";
int k = 4;
PrintSubstringWithKDistinctChars(str, k);
}
/*
run:
char chara charac harac aract ract acte cter ters
*/