#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:60000000")
using namespace std;
const long double eps = 1e-9;
const int inf = (1 << 30) - 1;
const long long inf64 = ((long long)1 << 62) - 1;
const long double pi = 3.1415926535897932384626433832795;
template <class T>
T sqr(T x) {
  return x * x;
}
int n, m, k;
vector<pair<int, int> > a;
vector<int> g[300500];
int u[300500];
vector<int> q;
void go(int v) {
  u[v] = 1;
  for (int i = 0; i < (int)(g[v].size()); i++)
    if (u[g[v][i]] == 0)
      go(g[v][i]);
    else if (u[g[v][i]] == 1) {
      cout << -1 << endl;
      exit(0);
    }
  u[v] = 2;
  q.push_back(v);
}
int main() {
  cin >> n >> m;
  k = m;
  for (int i = 0; i < (int)(n); i++) {
    a.clear();
    for (int j = 0; j < (int)(m); j++) {
      int x;
      scanf("%d", &x);
      if (x != -1) a.push_back(make_pair(x, j));
    }
    sort(a.begin(), a.end());
    if (a.size() == 0) continue;
    int l = 0;
    int r = l;
    while (r + 1 < (int)a.size() && a[r + 1].first == a[l].first) r++;
    while (r + 1 < (int)a.size()) {
      int l2 = r + 1;
      int r2 = l2;
      while (r2 + 1 < (int)a.size() && a[r2 + 1].first == a[l2].first) r2++;
      for (int j = l; j <= r; j++) g[a[j].second].push_back(k);
      for (int j = l2; j <= r2; j++) g[k].push_back(a[j].second);
      k++;
      l = l2;
      r = r2;
    }
  }
  memset(u, 0, sizeof(u));
  q.clear();
  for (int i = 0; i < (int)(m); i++)
    if (!u[i]) go(i);
  for (int i = (int)(q.size()) - 1; i >= 0; i--)
    if (q[i] < m) printf("%d ", q[i] + 1);
  cout << endl;
  return 0;
}
