#include <iostream>
#include <unordered_map>
int CountSubstringWithKDistinctChars(std::string s, int k) {
int size = s.length();
int count = 0;
for (int i = 0; i < size; i++) {
for (int j = i; j < size; j++) {
int temp = 0;
std::unordered_map<char,int> um;
for (int m = i; m <= j; m++) {
um[s[m]]++;
if (um[s[m]] == 1) {
temp++;
}
}
if (temp == k) {
count++;
}
}
}
return count;
}
int main(){
std::string str = "characters";
int k = 4;
std::cout << "Number of substrings with exactly k distinct characters = ";
std::cout << CountSubstringWithKDistinctChars(str, k);
}
/*
run:
Number of substrings with exactly k distinct characters = 9
*/