#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
const ll MO = 1e9+7;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
ll t;
cin>>t;
while(t--)
{
ll n,k;
cin>>n>>k;
string str;
cin>>str;
vector<ll> v1,v2,v3;
ll rd=0;
for(ll i=0;i<str.size();++i)
{
if(str[i]=='b')
rd++;
}
//cout<<rd<<endl;
ll co=0;
for(ll i=0;i<str.size();++i)
{
if(str[i]=='a')
{
//v1.push_back(i+1);
v3.push_back(rd-co);
}
else if(str[i]=='b')
{
co++;
}
}
unsigned long long int dt=0;
unsigned long long int gt=k*(k-1)/2;
for(ll i=0;i<v3.size();++i)
{
dt+=(k*v3[i]+gt*rd);
}
//unsigned long long int gt=k*(k+1)/2;
//dt*=gt;
cout<<dt<<endl;
}
return 0;
}
ICAgICNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CiAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwogICAgdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsOwogICBjb25zdCBsbCBNTyA9IDFlOSs3OwogCiAgICBpbnQgbWFpbigpIHsKICAgICAgICAgICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICAgICAgICAgIGNpbi50aWUoTlVMTCk7CiAgICAgICAgICAgIGNvdXQudGllKE5VTEwpOwogCiAgICAgICAgICAgIGxsIHQ7CiAgICAgICAgICAgIGNpbj4+dDsKICAgICAgICAgICAgd2hpbGUodC0tKQogICAgICAgICAgICB7CiAgICAgICAgICAgIGxsIG4sazsKICAgICAgICAgICAgY2luPj5uPj5rOwogICAgICAgICAgICBzdHJpbmcgc3RyOwogICAgICAgICAgICBjaW4+PnN0cjsKICAgICAgICAgICAgdmVjdG9yPGxsPiB2MSx2Mix2MzsKICAgICAgICAgICAgbGwgcmQ9MDsKICAgICAgICAgICAgZm9yKGxsIGk9MDtpPHN0ci5zaXplKCk7KytpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZihzdHJbaV09PSdiJykKICAgICAgICAgICAgICAgICAgICByZCsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vY291dDw8cmQ8PGVuZGw7CiAgICAgICAgICAgIGxsIGNvPTA7CiAgICAgICAgICAgIGZvcihsbCBpPTA7aTxzdHIuc2l6ZSgpOysraSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYoc3RyW2ldPT0nYScpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAvL3YxLnB1c2hfYmFjayhpKzEpOwogICAgICAgICAgICAgICAgICAgICAgIHYzLnB1c2hfYmFjayhyZC1jbyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZihzdHJbaV09PSdiJykKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgZHQ9MDsKICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGludCBndD1rKihrLTEpLzI7CiAgICAgICAgICAgIGZvcihsbCBpPTA7aTx2My5zaXplKCk7KytpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkdCs9KGsqdjNbaV0rZ3QqcmQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vdW5zaWduZWQgbG9uZyBsb25nIGludCBndD1rKihrKzEpLzI7Ci8vZHQqPWd0OwogICAgICAgICAgICBjb3V0PDxkdDw8ZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwogICAgfQog