class Solution {
public int longestSubstring(String s, int k) {
char[] chars = s.toCharArray();
int[] counts = new int[26];
for (int i = 0; i < chars.length; i++) {
counts[chars[i] - 'a']++;
}
for (int i = 0; i < chars.length; i++) {
int count = counts[chars[i] - 'a'];
if (count > 0 && count < k) {
int j = i + 1;
while (j < chars.length && counts[chars[j] - 'a'] < k) {
j++;
}
int i1 = longestSubstring(s.substring(0, i), k);
int i2 = longestSubstring(s.substring(j), k);
return Integer.max(i1, i2);
}
}
return s.length();
}
}