class Solution {
public int takeCharacters(String s, int k) {
int n = s.length();
int[] map = new int[3];
for (char c : s.toCharArray()) {
map[c - 'a']++;
}
for (char c : "abc".toCharArray()) {
map[c - 'a'] -= k; // 6, 0, 0
if (map[c - 'a'] < 0) {
return -1;
}
}
int[] currentCount = new int[3];
int left = 0;
int right = 0;
int maxSize = 0;
while (right < n) {
char rightChar = s.charAt(right); // c
currentCount[rightChar - 'a']++; // a: 1, b:0, c:0
right++;
while (currentCount[rightChar - 'a'] > map[rightChar - 'a'] ) { //
char leftChar = s.charAt(left);
currentCount[leftChar - 'a']--;
left++;
}
maxSize = Math.max(maxSize, right - left); // r - l = 0
}
return n - maxSize;
}
}a