/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// your code goes here
// store unique char in set
int k = 2;
int n = s.length();
Set<Character> set = new HashSet<>();
long count = 0;
HashMap
<Character, Integer
> mp
=new HashMap
<>(); for(int i=0, j=0; j<n; j++){
mp.put(s.charAt(j), mp.getOrDefault(s.charAt(j), 0) +1);
// reduce wndow of pointer if count>k
while(mp.size() > k){
mp.put(s.charAt(i), mp.getOrDefault(s.charAt(i), 0) - 1);
if(mp.get(s.charAt(i))==0){
mp.remove(s.charAt(i)); // if freq 0 then remove it
}
i++; // move pointer toward right
}
// all subarrays ending at j are valid
count+=(j - i+1);
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQkvLyBzdG9yZSB1bmlxdWUgY2hhciBpbiBzZXQKCQlTdHJpbmcgcyA9ICJwcXBxcyI7CgkJaW50IGsgPSAyOwoJCWludCBuID0gcy5sZW5ndGgoKTsKICAgICAgICBTZXQ8Q2hhcmFjdGVyPiBzZXQgPSBuZXcgSGFzaFNldDw+KCk7CiAgICAgICAgbG9uZyBjb3VudCA9IDA7CgkJSGFzaE1hcDxDaGFyYWN0ZXIsIEludGVnZXI+IG1wID1uZXcgSGFzaE1hcDw+KCk7CgkJZm9yKGludCBpPTAsIGo9MDsgajxuOyBqKyspewoJCQltcC5wdXQocy5jaGFyQXQoaiksIG1wLmdldE9yRGVmYXVsdChzLmNoYXJBdChqKSwgMCkgKzEpOwoJCQkvLyByZWR1Y2Ugd25kb3cgb2YgcG9pbnRlciBpZiBjb3VudD5rCgkJCXdoaWxlKG1wLnNpemUoKSA+IGspewoJCQkJbXAucHV0KHMuY2hhckF0KGkpLCBtcC5nZXRPckRlZmF1bHQocy5jaGFyQXQoaSksIDApIC0gMSk7CgkJCQlpZihtcC5nZXQocy5jaGFyQXQoaSkpPT0wKXsKCQkJCQltcC5yZW1vdmUocy5jaGFyQXQoaSkpOyAvLyBpZiBmcmVxIDAgdGhlbiByZW1vdmUgaXQKCQkJCX0KCQkJCWkrKzsgLy8gbW92ZSBwb2ludGVyIHRvd2FyZCByaWdodAoJCQl9CgkJCS8vIGFsbCBzdWJhcnJheXMgZW5kaW5nIGF0IGogYXJlIHZhbGlkCgkJCWNvdW50Kz0oaiAtIGkrMSk7CiAgICAgICAgfQogICAgICAgIFN5c3RlbS5vdXQucHJpbnQoY291bnQpOwoJfQp9