#include<bits/stdc++.h>
using namespace std;
const int N=5005;
//最搞5005?!
char b[2*N],ans[N];
int main(){
ios::sync_with_stdio(0);
//加速?!
cin.tie(0);
//加速?!
cout.tie(0);
//加速?!
string a;
cin>>a;
int n=a.size();
for(int i=0;i<n;i++){
//扩倍?!
b[i+1]=a[i];
//从一开始存储?!
b[n+i+1]=a[i];
//在后面存储一边同样的b,方便枚举?!
}
for(int i=1;i<=n;i++)
ans[i]=b[i];
//存储前n个?!
for(int i=2;i<=n;i++){
bool fl=0;
for(int j=0;j<n;j++){
char a1=b[i+j];
//尾巴?!
char a2=ans[j+1];
//首 ?!
if(a1<a2){
//首小尾?!
fl=1;
//标记?!
break;
//回回?!
}
if(a1>a2){
//否否?!
break;
//回回?!
}
}
if(fl){
//小小?!
for(int j=0;j<n;j++)
ans[1+j]=b[i+j];
//大安?!
}
}
for(int i=1;i<=n;i++)
cout<<ans[i];
//输出大安?!
return 0;
}//douzhichupinbishijingpin
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll f(ll x) {
return x*(x+1)/2;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
ll k;
string s;
cin>>n>>k>>s;
vector<int> v;
int c=0;
ll tot=0;
for(int i=0; i<n; i++) {
if(s[i]=='1')c++;
else {
if(c) {
v.push_back(c);
tot+=f(c);
c=0;
}
}
}
if(c) {
v.push_back(c);
tot+=f(c);
}
if(tot<=k) {
cout<<0;
return 0;
}
priority_queue<pair<ll,int>> q;
for(int i=0; i<v.size();i++) {
int L=v[i];
if(L>0) {
int a=(L-1)/2,b=L-1-a;
q.push({f(L)-f(a)-f(b),L});
}
}
int ans=0;
while(!q.empty()&&tot>k) {
ll d=q.top().first;
int L=q.top().second;
q.pop();
tot-=d;
ans++;
if(tot<=k)break;
int a=(L-1)/2;
int b=L-1-a;
if(a>0) {
int x=(a-1)/2;
int y=a-1-x;
q.push({f(a)-f(x)-f(y),a});
}
if(b>0) {
int x=(b-1)/2;
int y=b-1-x;
q.push({f(b)-f(x)-f(y),b});
}
}
cout<<ans;
return 0;
}