#include <algorithm>
#include <cstdlib>
#include <iostream>
using std::cin;
const int N = 1e6 + 5;
void shutd() {
std::cout << -1 << "\n";
exit(0);
}
int tp;
int deg[N], cur[N], st[N];
std::vector<int> G[N];
void add(int u, int v) {
G[u].emplace_back(v);
deg[u]--;
deg[v]++;
}
void dfs(int u) {
for (int &i = cur[u]; i < G[u].size();) {
int v = G[u][i++];
dfs(v);
}
st[++tp] = u;
}
int main() {
std::ios::sync_with_stdio(0);
cin.tie(0);
int n, m, b;
cin >> n >> m >> b;
for (int i = 0; i < n; ++i) {
std::string s;
cin >> s;
auto p = std::find(s.begin(), s.end(), '1');
int u = p - s.begin();
if (u >= m) shutd();
add(n + u, i);
while (1) {
auto q = std::find(p + 1, s.end(), '1');
if (q == s.end()) break;
if (q - p - 1 != m - 1) shutd();
p = q;
}
int v = s.end() - p - 1;
if (v >= m) shutd();
add(i, n + m + v);
}
int tot = n + 2 * m + 2, s = tot - 2, t = tot - 1;
add(s, n + b - 1);
add(n + m + m - b, t);
for (int i = 0; i < m; ++i) {
for (int j = 0, num = deg[n + m + i]; j < num; ++j) {
add(n + m + i, n + m - i - 1);
}
}
for (int i = 0; i < tot - 2; ++i) {
if (deg[i]) shutd();
std::sort(G[i].begin(), G[i].end());
}
dfs(s);
while (tp) {
int u = st[tp--];
if (u < n) std::cout << u + 1 << " ";
}
std::cout << "\n";
return 0;
}