#include #define rep(i, n) for (int i = 0; i < n; ++i) typedef long long ll; using namespace std; const int INF = 2e9; int main() { cin.tie(0)->sync_with_stdio(0); int N, M; cin >> N >> M; vector D(N, vector(M + 1, INF)); rep(i, N) rep(j, M) cin >> D[i][j]; rep(i, N) sort(D[i].begin(), D[i].end()); int ans = INF; rep(i, M) { if (i >= M) return INF; int mi = D[0][i]; int cur = mi; for (int j = 1; j < N; ++j) { cur = *lower_bound(D[j].begin(), D[j].end(), cur); } if (cur == INF) continue; ans = min(ans, cur - mi); } if (ans == INF) ans = -1; cout << ans << "\n"; return 0; }