#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 1e6 +5;
pair<long long, long long> pr[MaxN];
long long n,m;
map<long long, long long>mp;
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> m;
    long long cnt=0;
    for (long long i=1; i<=n ;i++)
    {
        for (long long j=1; j<=m; j++)
        {
            long long x;
            cin >> x;
            pr[++cnt].first = x;
            pr[cnt].second=i;
        }
    }
    sort(pr+1,pr+cnt+1);
    long long l=1,r=1,ans=LLONG_MAX;
    while (r<=cnt)
    {
        mp[pr[r].second]++;
        while(mp.size()==n)
        {
            ans=min(ans,pr[r].first-pr[l].first);
            mp[pr[l].second]--;
            if(mp[pr[l].second]==0)
            {
                mp.erase(pr[l].second);
            }
            l++;
        }
        r++;
    }
    cout << ans;
}
