#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
 
using namespace std;
using namespace __gnu_pbds;
 
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define fbo find_by_order
#define ook order_of_key
 
typedef long long ll;
typedef pair<ll,ll> ii;
typedef vector<int> vi;
typedef long double ld; 
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds;
typedef set<int>::iterator sit;
typedef map<int,int>::iterator mit;
typedef vector<int>::iterator vit;

void simulate(string &s, int pos, int dir)
{
	int n = s.length();
	if(pos<0||pos>=n) return ;
	if(s[pos]=='A')
	{
		if(dir==0)
		{
			s[pos]='B';
			simulate(s,pos-1,dir^1);
		}
		else
		{
			s[pos]='B';
			simulate(s,pos+1,dir^1);
		}
	}
	else
	{
		if(dir==0)
		{
			s[pos]='A';
			simulate(s,pos+1,dir);
		}
		else
		{
			s[pos]='A';
			simulate(s,pos-1,dir);
		}
	}
}

bool alternate(string s)
{
	for(int i=0;i+1<s.length();i++)
	{
		if(s[i]==s[i+1]) return false;
	}
	return true;
}

int main()
{
	ios_base::sync_with_stdio(0); cin.tie(0);
	int n; ll k;
	
	cin>>n>>k;
	string s; cin>>s;
	/*
	string ss=s;
	
	for(int i=0;i<k;i++)
	{
		simulate(s,0,0);
		cout<<s<<'\n';
	}
	cout<<'\n';
	s=ss;
	*/
	
	deque<int> dq;
	int front = 0;
	int r = 1;
	if(s[0]=='A') front=0;
	else front=1;
	for(int i=1;i<s.length();i++)
	{
		if(s[i]==s[i-1])
		{
			r++;
		}
		else
		{
			dq.pb(r);
			r=1;
		}
	}
	dq.pb(r);
	for(int i=0;i<k;i++)
	{
		if(front)
		{
			if(int(dq.size())&1)
			{
				int run = dq.back();
				dq.pop_back();
				if(dq.empty())
				{
					front^=1;
					dq.pb(run);
				}
				else
				{
					if(dq[0]==1)
					{
						dq.pop_front();
					}
					else
					{
						dq[0]--;
						front^=1;
					}
					dq.pb(1+run);
				}
			}
			else
			{
				if(dq[0]==1)
				{
					dq.pop_front();
				}
				else
				{
					dq[0]--;
					front^=1;
				}
				dq.pb(1);
			}
		}
		else
		{
			if(dq[0]==1)
			{
				dq.pop_front();
				if(dq.empty()) dq.pb(1);
				else dq.front()++;
				front^=1;
			}
			else
			{
				dq[0]--;
				dq.push_front(1);
				front^=1;
			}
		}
		/*
		int tmp=front;
		for(int i=0;i<dq.size();i++)
		{
			for(int j=0;j<dq[i];j++)
			{
				if(tmp) cout<<"B";
				else cout<<"A";
			}
			tmp^=1;
		}
		cout<<'\n';
		*/
		if(int(dq.size()) == n)
		{
			//cout<<i<<' '<<front<<'\n';
			if(front)
			{
				int tmp=front;
				for(int i=0;i<dq.size();i++)
				{
					for(int j=0;j<dq[i];j++)
					{
						if(tmp) cout<<"B";
						else cout<<"A";
					}
					tmp^=1;
				}
				cout<<'\n';
				return 0;
			}
			else
			{
				if((k-i)&1)
				{
					int tmp=front;
					for(int i=0;i<dq.size();i++)
					{
						for(int j=0;j<dq[i];j++)
						{
							if(tmp) cout<<"B";
							else cout<<"A";
						}
						tmp^=1;
					}
					cout<<'\n';
					return 0;
				}
				else
				{
					if(dq[0]==1)
					{
						dq.pop_front();
						if(dq.empty()) dq.pb(1);
						else dq.front()++;
						front^=1;
					}
					else
					{
						dq[0]--;
						dq.push_front(1);
						front^=1;
					}
					int tmp=front;
					for(int i=0;i<dq.size();i++)
					{
						for(int j=0;j<dq[i];j++)
						{
							if(tmp) cout<<"B";
							else cout<<"A";
						}
						tmp^=1;
					}
					cout<<'\n';
					return 0;
				}	
			}
		}
	}
	int tmp=front;
	for(int i=0;i<dq.size();i++)
	{
		for(int j=0;j<dq[i];j++)
		{
			if(tmp) cout<<"B";
			else cout<<"A";
		}
		tmp^=1;
	}
	cout<<'\n';
	
}


Measured memory_bytes: 1556