#include <bits/stdc++.h>
using namespace std;
int n, m, a[100005], ind[100005], exid, v[200005], cnt, res[100005];
vector<int> g[200005];
inline bool cmp(int x, int y) { return a[x] < a[y]; }
void fail() {
  printf("%d\n", -1);
  exit(0);
}
void dfs(int x) {
  v[x] = 1;
  for (size_t i = 0; i < g[x].size(); i++) {
    if (v[g[x][i]] == 0)
      dfs(g[x][i]);
    else if (v[g[x][i]] == 1)
      fail();
  }
  if (x < m) res[cnt++] = x;
  v[x] = 2;
}
int main() {
  scanf("%d %d", &n, &m);
  exid = m;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      scanf("%d", a + j);
      ind[j] = j;
    }
    sort(ind, ind + m, cmp);
    int p = 0, curr = -1;
    while (p < m && a[ind[p]] == -1) p++;
    for (int j = p; j < m; j++) {
      if (j != p && a[ind[j - 1]] != a[ind[j]]) {
        curr = exid;
        exid++;
      }
      g[ind[j]].push_back(exid);
      if (curr != -1) g[curr].push_back(ind[j]);
    }
    exid++;
  }
  for (int i = 0; i < m; i++)
    if (v[i] == 0) dfs(i);
  for (int i = m - 1; i >= 0; i--) printf("%d ", res[i] + 1);
  return 0;
}
