What's wrong with my vowMaxtrix code?

it is giving wrong answer on some test cases.

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef pair<string, string> pss;
typedef vector vi;
typedef vector vvi;
typedef vector vii;
typedef vector vl;
typedef vector vvl;
typedef unordered_map<string,int> usi;
typedef unordered_set ui;
#define FOR(a, b, c) for (int a = b; a < c; ++a)
#define TC(t) while(t–)

int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin>>t;
TC(t){
int n,k;
cin>>n>>k;
string s;
cin>>s;
std::string::iterator itr=s.begin();
ll mod=1e9+7;
int temp=0;
int i=0;
ll res=1;
while(1)
{
temp=0;
while(i!=k)
{
if(*itr==‘a’||*itr==‘i’||*itr==‘e’||*itr==‘o’||*itr==‘u’)
i++;
itr++;
}
while(itr<s.end()&&*itr!=‘a’&&*itr!=‘i’&&*itr!=‘e’&&*itr!=‘o’&&*itr!=‘u’)
{
temp++;
itr++;
}
if(itr==s.end()-1&&(*itr==‘a’||*itr==‘i’||*itr==‘e’||*itr==‘o’||itr==‘u’))
break;
i=0;
if(itr>=s.end())
break;
res
=temp+1;
}
cout<<res%mod<<“\n”;
}
return 0;
}