#include <bits/stdc++.h>
#define FORE(i, a, b) for(int i = (a); i <= (b); ++i)
#define FORD(i, a, b) for(int i = (a); i >= (b); --i)
#define FOR(i, a, b) for(int i = (a); i < (b); ++i)
#define X first
#define Y second
#define ll long long
#define mp make_pair
#define pb push_back
#define endl '\n'
const int MAXN = 1e5 + 2;
const int base1 = 1e9 + 7;
const int base2 = 1e9 + 289;
const int N = 5000;
using namespace std;
struct data
{
int x1,x2,id;
}dd[MAXN];
int n,k;
int len[MAXN];
ll M1[MAXN],M2[MAXN],h1[51][MAXN],h2[51][MAXN];
void build1(ll h[],string s,int n)
{
FORE(i,1,n)
h[i] = (h[i-1]*M1[1] + s[i-1])%base1;
}
int get1(ll h[],int l,int r)
{
return (h[r] - h[l-1]*M1[r-l+1] + 1ll*base1*base1)%base1;
}
void build2(ll h[],string s,int n)
{
FORE(i,1,n)
h[i] = (h[i-1]*M2[1] + s[i-1])%base2;
}
int get2(ll h[],int l,int r)
{
return (h[r] - h[l-1]*M2[r-l+1] + 1ll*base2*base2)%base2;
}
int cmp(data a,data b)
{
if (a.x1 != b.x1) return a.x1 < b.x1;
if (a.x2 != b.x2) return a.x2 < b.x2;
return a.id < b.id;
}
int check(int r)
{
int cnt = 0;
FORE(i,1,n)
{
int rr = len[i] - r + 1;
FORE(j,1,rr)
{
int x1 = get1(h1[i] , j , j + r - 1);
int x2 = get2(h2[i] , j , j + r - 1);
dd[++cnt].x1 = x1;
dd[cnt].x2 = x2;
dd[cnt].id = i;
}
}
sort(dd+1,dd+cnt+1,cmp);
int dem = 0;
FORE(i,1,cnt)
if (dd[i].x1 != dd[i-1].x1 || dd[i].x2 != dd[i-1].x2)
{
dem = 1;
}
else
if (dd[i].id != dd[i-1].id)
{
++dem;
if (dem == k) return 1;
}
return 0;
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
#ifndef ONLINE_JUDGE
freopen("vo17tv.inp", "r", stdin);
freopen("vo17tv.ans", "w", stdout);
#endif
M1[1] = 2802; M2[1] = 2208;
cin>>n>>k;
int lenmi = 0;
FORE(i,1,n)
{
string st;
cin>>st;
len[i] = st.size();
build1(h1[i] , st , len[i]);
build2(h2[i] , st , len[i]);
lenmi = max(lenmi , len[i]);
}
FORE(i,2,lenmi) M1[i] = M1[i-1]*M1[1]%base1;
FORE(i,2,lenmi) M2[i] = M2[i-1]*M2[1]%base2;
int l = 1;
int r = lenmi;
int ans = 0;
while(l <= r)
{
int mid = (l+r)>>1;
if (check(mid))
{
l = mid + 1;
ans = mid;
}
else
r = mid - 1;
}
cout<<ans<<endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SRShpLCBhLCBiKSBmb3IoaW50IGkgPSAoYSk7IGkgPD0gKGIpOyArK2kpCiNkZWZpbmUgRk9SRChpLCBhLCBiKSBmb3IoaW50IGkgPSAoYSk7IGkgPj0gKGIpOyAtLWkpCiNkZWZpbmUgRk9SKGksIGEsIGIpIGZvcihpbnQgaSA9IChhKTsgaSA8IChiKTsgKytpKQojZGVmaW5lIFggZmlyc3QKI2RlZmluZSBZIHNlY29uZAojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGVuZGwgJ1xuJwogCmNvbnN0IGludCBNQVhOID0gMWU1ICsgMjsKY29uc3QgaW50IGJhc2UxID0gMWU5ICsgNzsKY29uc3QgaW50IGJhc2UyID0gMWU5ICsgMjg5Owpjb25zdCBpbnQgTiA9IDUwMDA7CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RydWN0IGRhdGEKewogICAgaW50IHgxLHgyLGlkOwp9ZGRbTUFYTl07CmludCBuLGs7CmludCBsZW5bTUFYTl07CmxsIE0xW01BWE5dLE0yW01BWE5dLGgxWzUxXVtNQVhOXSxoMls1MV1bTUFYTl07CiAKdm9pZCBidWlsZDEobGwgaFtdLHN0cmluZyBzLGludCBuKQp7CiAgICBGT1JFKGksMSxuKQogICAgaFtpXSA9IChoW2ktMV0qTTFbMV0gKyBzW2ktMV0pJWJhc2UxOwp9CiAKaW50IGdldDEobGwgaFtdLGludCBsLGludCByKQp7CiAgICByZXR1cm4gKGhbcl0gLSBoW2wtMV0qTTFbci1sKzFdICsgMWxsKmJhc2UxKmJhc2UxKSViYXNlMTsKfQogCnZvaWQgYnVpbGQyKGxsIGhbXSxzdHJpbmcgcyxpbnQgbikKewogICAgRk9SRShpLDEsbikKICAgIGhbaV0gPSAoaFtpLTFdKk0yWzFdICsgc1tpLTFdKSViYXNlMjsKfQogCmludCBnZXQyKGxsIGhbXSxpbnQgbCxpbnQgcikKewogICAgcmV0dXJuIChoW3JdIC0gaFtsLTFdKk0yW3ItbCsxXSArIDFsbCpiYXNlMipiYXNlMiklYmFzZTI7Cn0KIAppbnQgY21wKGRhdGEgYSxkYXRhIGIpCnsKICAgIGlmIChhLngxICE9IGIueDEpIHJldHVybiBhLngxIDwgYi54MTsKICAgIGlmIChhLngyICE9IGIueDIpIHJldHVybiBhLngyIDwgYi54MjsKICAgIHJldHVybiBhLmlkIDwgYi5pZDsKfQogCmludCBjaGVjayhpbnQgcikKewogICAgaW50IGNudCA9IDA7CiAgICBGT1JFKGksMSxuKQogICAgewogICAgICAgIGludCByciA9IGxlbltpXSAtIHIgKyAxOwogICAgICAgIEZPUkUoaiwxLHJyKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHgxID0gZ2V0MShoMVtpXSAsIGogLCBqICsgciAtIDEpOwogICAgICAgICAgICBpbnQgeDIgPSBnZXQyKGgyW2ldICwgaiAsIGogKyByIC0gMSk7CiAgICAgICAgICAgIGRkWysrY250XS54MSA9IHgxOwogICAgICAgICAgICBkZFtjbnRdLngyID0geDI7CiAgICAgICAgICAgIGRkW2NudF0uaWQgPSBpOwogICAgICAgIH0KICAgIH0KICAgIHNvcnQoZGQrMSxkZCtjbnQrMSxjbXApOwogICAgaW50IGRlbSA9IDA7CiAgICBGT1JFKGksMSxjbnQpCiAgICBpZiAoZGRbaV0ueDEgIT0gZGRbaS0xXS54MSB8fCBkZFtpXS54MiAhPSBkZFtpLTFdLngyKQogICAgewogICAgICAgIGRlbSA9IDE7CiAgICB9CiAgICBlbHNlCiAgICBpZiAoZGRbaV0uaWQgIT0gZGRbaS0xXS5pZCkKICAgIHsKICAgICAgICArK2RlbTsKICAgICAgICBpZiAoZGVtID09IGspIHJldHVybiAxOwogICAgfQogICAgcmV0dXJuIDA7Cn0KIAppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7CiAgICAjaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3Blbigidm8xN3R2LmlucCIsICJyIiwgc3RkaW4pOwogICAgZnJlb3Blbigidm8xN3R2LmFucyIsICJ3Iiwgc3Rkb3V0KTsKICAgICNlbmRpZgogICAgTTFbMV0gPSAyODAyOyBNMlsxXSA9IDIyMDg7CiAgICBjaW4+Pm4+Pms7CiAgICBpbnQgbGVubWkgPSAwOwogICAgRk9SRShpLDEsbikKICAgIHsKICAgICAgICBzdHJpbmcgc3Q7CiAgICAgICAgY2luPj5zdDsKICAgICAgICBsZW5baV0gPSBzdC5zaXplKCk7CiAgICAgICAgYnVpbGQxKGgxW2ldICwgc3QgLCBsZW5baV0pOwogICAgICAgIGJ1aWxkMihoMltpXSAsIHN0ICwgbGVuW2ldKTsKICAgICAgICBsZW5taSA9IG1heChsZW5taSAsIGxlbltpXSk7CiAgICB9CiAgICBGT1JFKGksMixsZW5taSkgTTFbaV0gPSBNMVtpLTFdKk0xWzFdJWJhc2UxOwogICAgRk9SRShpLDIsbGVubWkpIE0yW2ldID0gTTJbaS0xXSpNMlsxXSViYXNlMjsKICAgIGludCBsID0gMTsKICAgIGludCByID0gbGVubWk7CiAgICBpbnQgYW5zID0gMDsKICAgIHdoaWxlKGwgPD0gcikKICAgIHsKICAgICAgICBpbnQgbWlkID0gKGwrcik+PjE7CiAgICAgICAgaWYgKGNoZWNrKG1pZCkpCiAgICAgICAgewogICAgICAgICAgICBsID0gbWlkICsgMTsKICAgICAgICAgICAgYW5zID0gbWlkOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICAgIHIgPSBtaWQgLSAxOwogICAgfQogICAgY291dDw8YW5zPDxlbmRsOwogICAgcmV0dXJuIDA7Cn0=