#include using namespace std; #include using namespace atcoder; #define rep(i, n) for(int i=0;i<(n);++i) #define rep1(i, n) for(int i=1;i<=(n);i++) #define ll long long using mint = modint998244353; using P = pair; using lb = long double; using T = tuple; #ifdef LOCAL # include # define dbg(...) debug_print::multi_print(#__VA_ARGS__, __VA_ARGS__) #else # define dbg(...) (static_cast(0)) #endif int main() { int n, m; cin >> n >> m; vector> flg(m, vector(n)); rep(i,n*m){ int a, b; cin >> a >> b; --a;--b; flg[b][a] = i+1; } int ans = n*m; rep(i,m){ for(int j=1;j<=n-3;j++){ vector vs; for(int k=0;k<5;k++){ vs.push_back(flg[i][(j+k)%n]); } sort(vs.begin(),vs.end()); dbg(vs); int tmp = 0; int cnt = 0; int now = 5; while(true){ while(cnt<5 && vs[cnt]<=now) cnt++; if(cnt==5) break; int nxt = vs[cnt]; int val = (nxt-now+5-cnt-1)/(5-cnt); now += val*(5-cnt); tmp += val; } ans = min(ans, tmp); } } cout << ans << endl; return 0; }