My code is giving answer for sample test cases. but shows Wrong answer in 2 cases on submission

#include <bits/stdc++.h>
using namespace std;

int main()
{
int k;
cin>>k;
int temp = k;
string s;
cin>>s;
int n = s.length();

// checking for longest substring of a by changing k b's
if(s[0]!='a')
{
	k--;
}

char ch1 = 'a';
int max_a = -1;
int cnt = 1;
for(int i=1;i<n;i++)
{
	if(s[i]==ch1)
	{
		cnt++;
	}
	else if(s[i]!=ch1 and k>0)
	{
		cnt++;
		k--;
	}
	else if(s[i]!=ch1 and k==0)
	{
		max_a = max(max_a,cnt);
		cnt = 1;
		k = temp;
		k--;
	}
}

max_a = max(cnt,max_a);

// checking for longest substring of b by changing k a's
k = temp;
if(s[0]!='b')
{
	k--;
}

char ch2 = 'b';
int max_b = -1;
cnt = 1;
for(int i=1;i<n;i++)
{
	if(s[i]==ch2)
	{
		cnt++;
	}
	else if(s[i]!=ch2 and k>0)
	{
		cnt++;
		k--;
	}
	else if(s[i]!=ch2 and k==0)
	{
		max_b = max(max_b,cnt);
		cnt = 1;
		k = temp;
		k--;
	}
}

max_b = max(cnt,max_b);

cout<<max(max_a,max_b)<<"\n";

return 0;

}

@Aditya9266
your logic is Not Correct
try for this input :
2
aabbaababba
correct output : 6