简单DP
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 302
int a[N][N], dp[N];
bool check(int i, int k, int n) {
for (int j = 0;j < n;j++) {
if (a[i][j] <= a[k][j]) return false;
}
return true;
}
int main() {
int n, i, j, k, m, mx;
while (~scanf("%d%d", &n, &m)) {
dp[0] = mx = 1;
for (i = 0;i < n;i++) {
for (j = 0;j < m;j++) {
scanf("%d", &a[i][j]);
}
if (i) {
int mi = 0;
for (k = 0;k < i;k++) {
if (check(k, i, m)) {
mi = max(mi, dp[k]);
}
}
dp[i] = mi+1;
}
mx = max(mx, dp[i]);
}
printf("%d\n", n-mx);
}
}