#include <bits/stdc++.h>
#define NMAX 50500
using namespace std;
const int base=256;
const int mod=1e9+7;
string s;
int n,k;
int Hash[NMAX],pw[NMAX+1];
void prepare()
{
cin>>n>>k>>s;
s='#'+s;
pw[0]=1;
for(int i=1;i<=NMAX;i++) pw[i]=1ll*pw[i-1]*base%mod;
for(int i=1;i<=n;i++) Hash[i]=(Hash[i-1]+1ll*((int)s[i])*pw[i-1])%mod;
// for(int i=1;i<=n;i++) cout<<Hash[i]<<" ";
}
int gethash(int l,int r)
{
int temp=Hash[r]-Hash[l-1];
if(temp<0) temp+=mod;
return 1ll*temp*pw[NMAX-l+1]%mod;
}
bool check_hash(int mask)
{
map<int,int> mp;
for(int i=1;i<=n-mask+1;i++)
{
mp[gethash(i,i+mask-1)]++;
}
for(pair<int,int> u:mp)
{
if(u.second>=k) return true;
}
return false;
}
void process()
{
int l=1,r=n,ans=1;
while(l<=r)
{
int mid=(l+r)>>1;
if(check_hash(mid))
{
ans=mid;
l=mid+1;
}
else
{
r=mid-1;
}
}
cout<<ans;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
prepare();
process();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgTk1BWCA1MDUwMAp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBpbnQgYmFzZT0yNTY7CmNvbnN0IGludCBtb2Q9MWU5Kzc7CnN0cmluZyBzOwppbnQgbixrOwppbnQgSGFzaFtOTUFYXSxwd1tOTUFYKzFdOwp2b2lkIHByZXBhcmUoKQp7CiAgICBjaW4+Pm4+Pms+PnM7CiAgICBzPScjJytzOwogICAgcHdbMF09MTsKICAgIGZvcihpbnQgaT0xO2k8PU5NQVg7aSsrKSAgcHdbaV09MWxsKnB3W2ktMV0qYmFzZSVtb2Q7CgogICAgZm9yKGludCBpPTE7aTw9bjtpKyspICBIYXNoW2ldPShIYXNoW2ktMV0rMWxsKigoaW50KXNbaV0pKnB3W2ktMV0pJW1vZDsKCiAgLy8gIGZvcihpbnQgaT0xO2k8PW47aSsrKSAgY291dDw8SGFzaFtpXTw8IiAiOwp9CmludCBnZXRoYXNoKGludCBsLGludCByKQp7CiAgICBpbnQgdGVtcD1IYXNoW3JdLUhhc2hbbC0xXTsKICAgIGlmKHRlbXA8MCkgIHRlbXArPW1vZDsKICAgIHJldHVybiAxbGwqdGVtcCpwd1tOTUFYLWwrMV0lbW9kOwp9CmJvb2wgY2hlY2tfaGFzaChpbnQgbWFzaykKewogICAgbWFwPGludCxpbnQ+IG1wOwogICAgZm9yKGludCBpPTE7aTw9bi1tYXNrKzE7aSsrKQogICAgewogICAgICAgIG1wW2dldGhhc2goaSxpK21hc2stMSldKys7CiAgICB9CiAgICBmb3IocGFpcjxpbnQsaW50PiB1Om1wKQogICAgewogICAgICAgIGlmKHUuc2Vjb25kPj1rKSByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIHJldHVybiBmYWxzZTsKfQp2b2lkIHByb2Nlc3MoKQp7CiAgICBpbnQgbD0xLHI9bixhbnM9MTsKICAgIHdoaWxlKGw8PXIpCiAgICB7CiAgICAgICAgaW50IG1pZD0obCtyKT4+MTsKICAgICAgICBpZihjaGVja19oYXNoKG1pZCkpCiAgICAgICAgewogICAgICAgICAgICBhbnM9bWlkOwogICAgICAgICAgICBsPW1pZCsxOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICByPW1pZC0xOwogICAgICAgIH0KCiAgICB9CiAgICBjb3V0PDxhbnM7Cgp9CmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBjb3V0LnRpZSgwKTsKICAgIHByZXBhcmUoKTsKICAgIHByb2Nlc3MoKTsKICAgIHJldHVybiAwOwp9Cg==