the logic for solving this problem is a simple one, we begin with 2 pointers left and right, we freeze left and increase right till it is possible to make string from left to right of one character once number of different character exceeds k, we move left pointer till it becomes less than k and then we freeze left pointer and move right and this process continues till right reaches n. We do this because this way we can find the maximum solution for each left.
In this approach i solved for both a and b at the same time but you can also do it twice once for a and then for b it will work just fine.