#include <bits/stdc++.h>
using namespace std;
const int N = 1e6+5;
struct Node {
int val,bel;
}clo[N<<1];
bool cmp(const Node &x,const Node &y) { return x.val < y.val; }
int buk[N],cnt,n,m;
int main()
{
scanf("%d%d",&n,&m);
int ki;
for (int i = 1;i<= n;i++) {
scanf("%d",&ki);
for (int j = 1;j<= ki;j++) {
cnt++;
scanf("%d",&clo[cnt].val);
clo[cnt].bel = i;
}
}
sort(clo+1,clo+cnt+1,cmp);
for (int i = 1;i<= n;i++)buk[i] = 0;
int tail = 0;
int ans = 1e9+5;
int cntbel = 0;
for (int i = 1;i<= cnt;i++) {
while (tail+1<=cnt) {
tail++;
buk[clo[tail].bel]++;
if (buk[clo[tail].bel] == 1)cntbel++;
if (cntbel >= m) {ans = min(ans,clo[tail].val-clo[i].val);break;}
}
buk[clo[i].bel]--;
if (buk[clo[i].bel]==0)cntbel--;
}
printf("%d\n",ans);
return 0;
}