#include <bits/stdc++.h>
using namespace std;
#define ll long long 
#define MOD 1000000007 
ll i,j,k,l,n,m,arr[1000005],vis[1000005];
struct node
{
	int ch;
	int pos;
}seg[10000005],seg1[10000005];
void init(int st,int end,int p)
{
	int mid;
	if(st==end)
	{
		seg[p].ch=INT_MAX;
		seg[p].pos=-1;
	}
	else
	{
		mid=st+(end-st)/2;
		init(st,mid,2*p);
		init(mid+1,end,2*p+1);
		seg[p].ch=INT_MAX;
		seg[p].pos=-1;
	}
}
pair<int,int> query(int beg,int end,int i,int j,int p)
{
	int mid;
	pair<int,int>l1;
	pair<int,int>l2;
	if(i>end || j<beg)
		return make_pair(INT_MAX,0);
	if(beg>=i && end<=j)
		return make_pair(seg[p].ch,seg[p].pos);
	mid=beg+(end-beg)/2;
	l1=query(beg,mid,i,j,2*p);
	l2=query(mid+1,end,i,j,2*p+1);
	if(l1.first<l2.first)
		return l1;
	else if(l1.first==l2.first && l1.second>l2.second)
		return l1;
	else
		return l2;
}
void update(int beg,int end,int i,int j,pair<int,int> value,int p)
{
	if(i>end || j<beg)
		return;
	if(beg>=i && end<=j)
	{
		seg[p].ch=value.first;
		seg[p].pos=value.second;
		return;
	}
	int mid=beg+(end-beg)/2;
	update(beg,mid,i,j,value,2*p);
	update(mid+1,end,i,j,value,2*p+1);
	pair<int,int>l1=make_pair(seg[2*p].ch,seg[2*p].pos);
	pair<int,int>l2=make_pair(seg[2*p+1].ch,seg[2*p+1].pos);
	if(l1.first<l2.first)
	{
		seg[p].ch=l1.first;
		seg[p].pos=l1.second;
	}
	else if(l1.first==l2.first && l1.second>l2.second)
	{
		seg[p].ch=l1.first;
		seg[p].pos=l1.second;
	}
	else
	{
		seg[p].ch=l2.first;
		seg[p].pos=l2.second;
	}
}
void init1(int st,int end,int p)
{
	int mid;
	if(st==end)
	{
		seg1[p].ch=INT_MAX;
		seg1[p].pos=-1;
	}
	else
	{
		mid=st+(end-st)/2;
		init1(st,mid,2*p);
		init1(mid+1,end,2*p+1);
		seg1[p].ch=INT_MAX;
		seg1[p].pos=-1;
	}
}
pair<int,int> query1(int beg,int end,int i,int j,int p)
{
	int mid;
	pair<int,int>l1;
	pair<int,int>l2;
	if(i>end || j<beg)
		return make_pair(INT_MAX,0);
	if(beg>=i && end<=j)
		return make_pair(seg1[p].ch,seg1[p].pos);
	mid=beg+(end-beg)/2;
	l1=query1(beg,mid,i,j,2*p);
	l2=query1(mid+1,end,i,j,2*p+1);
	if(l1.first<l2.first)
		return l1;
	else if(l1.first==l2.first && l1.second>l2.second)
		return l1;
	else
		return l2;
}
void update1(int beg,int end,int i,int j,pair<int,int> value,int p)
{
	if(i>end || j<beg)
		return;
	if(beg>=i && end<=j)
	{
		seg1[p].ch=value.first;
		seg1[p].pos=value.second;
		return;
	}
	int mid=beg+(end-beg)/2;
	update1(beg,mid,i,j,value,2*p);
	update1(mid+1,end,i,j,value,2*p+1);
	pair<int,int>l1=make_pair(seg1[2*p].ch,seg1[2*p].pos);
	pair<int,int>l2=make_pair(seg1[2*p+1].ch,seg1[2*p+1].pos);
	if(l1.first<l2.first)
	{
		seg1[p].ch=l1.first;
		seg1[p].pos=l1.second;
	}
	else if(l1.first==l2.first && l1.second>l2.second)
	{
		seg1[p].ch=l1.first;
		seg1[p].pos=l1.second;
	}
	else
	{
		seg1[p].ch=l2.first;
		seg1[p].pos=l2.second;
	}
}
int main() 
{
	string str;
	cin>>n>>k>>str;
	l=str.size();
	init(1,l,1);
	init1(1,l,1);
	for(i=0;i<l;i++)
		update(1,l,i+1,i+1,make_pair(int(str[i])-96,i+1),1);
	for(i=0;i<l;i++)
	{
		pair<int,int>p1=query(1,l,i+2,l,1);
		int yu=int(str[i])-96;
		int lp=0;
		if(vis[i]==0)
			lp+=1;
		if(vis[p1.second-1]==0)
			lp+=1;
		if((k>=2 && p1.first<yu) || (k==1 && (lp==1 || lp==0) && p1.first<yu) || (lp==0 && p1.first<yu))
		{
			k-=lp;
			vis[i]=1;
			vis[p1.second-1]=1;
			char yo=str[i];
			str[i]=str[p1.second-1];
			str[p1.second-1]=yo;
			update(1,l,i+1,i+1,make_pair(int(str[i])-96,i+1),1);
			update(1,l,p1.second,p1.second,make_pair(int(str[p1.second-1])-96,p1.second),1);
			update1(1,l,i+1,i+1,make_pair(int(str[i])-96,i+1),1);
			update1(1,l,p1.second,p1.second,make_pair(int(str[p1.second-1])-96,p1.second),1);
		}
		else if(k==1 && lp==2)
		{
			pair<int,int>p1=query1(1,l,i+2,l,1);
			int yu=int(str[i])-96;
			if(p1.first<yu)
			{
				k=0;
				vis[i]=1;
				vis[p1.second-1]=1;
				char yo=str[i];
				str[i]=str[p1.second-1];
				str[p1.second-1]=yo;
				update(1,l,i+1,i+1,make_pair(int(str[i])-96,i+1),1);
				update(1,l,p1.second,p1.second,make_pair(int(str[p1.second-1])-96,p1.second),1);
				update1(1,l,i+1,i+1,make_pair(int(str[i])-96,i+1),1);
				update1(1,l,p1.second,p1.second,make_pair(int(str[p1.second-1])-96,p1.second),1);
			}
		}
	}
	vector<int>v1;
	vector<char>v2;
	for(i=0;i<l;i++)
	{
		cout<<vis[i]<<" ";
		if(vis[i]==0)
			continue;
		v1.push_back(i);
		v2.push_back((str[i]));
	}
	sort(v2.begin(),v2.end());
	for(i=0;i<v1.size();i++)
		str[v1[i]]=v2[i];
	cout<<str;
	return 0;
}