#include <bits/stdc++.h> // NeOWami
using namespace std;
#define ft first
#define sc second
const int N = 3e3 + 5;
const int T = 5e2 + 5;
int n, m;
bitset<N + T> HPT[N];
bitset<N + T> tick;
void solve(int id) {
vector<int> ans;
tick.reset();
for (int i = n; i; i--) {
int val = HPT[i][id];
int cnt = ((tick & HPT[i]).count()) % 2;
if (cnt != val) {
if (HPT[i][i]) {
ans.push_back(i);
tick[i] = 1;
}
else return cout << "-1", void();
}
}
// reverse(ans.begin(), ans.end());
cout << ans.size() << "\n";
// for (int item: ans) cout << item << " ";
// cout << "\n";
}
signed main() {
cin.tie(NULL)->sync_with_stdio(false);
if(ifstream("Input.inp")) {
freopen("Input.inp", "r", stdin);
freopen("Output.out", "w", stdout);
}
cin >> n >> m;
for (int i = 1; i <= n; i++) {
HPT[i][i] = 1;
HPT[i][n + 1] = 1;
}
for (int i = 1; i <= m; i++) {
int u, v; cin >> u >> v;
HPT[u][v] = 1;
HPT[v][u] = 1;
}
// for (int i = 1; i <= n; i++) {
// for (int j = 1; j <= n + 1; j++) cerr << HPT[i][j] << " ";
// cerr << "\n";
// }
// cerr << "\n----\n";
for (int u = 1; u <= n; u++) {
for (int i = u + 1; i <= n; i++) if (HPT[i][u]) {
if (HPT[u][u]) HPT[i] ^= HPT[u];
else swap(HPT[u], HPT[i]);
}
}
// for (int i = 1; i <= n; i++) {
// for (int j = 1; j <= n + 1; j++) cerr << HPT[i][j] << " ";
// cerr << "\n";
// }
// cerr << "\n----\n";
for (int q = n + 1; q <= n + 1; q++) solve(q);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IC8vIE5lT1dhbWkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZnQgZmlyc3QKI2RlZmluZSBzYyBzZWNvbmQKY29uc3QgaW50IE4gPSAzZTMgKyA1Owpjb25zdCBpbnQgVCA9IDVlMiArIDU7CmludCBuLCBtOwpiaXRzZXQ8TiArIFQ+IEhQVFtOXTsKYml0c2V0PE4gKyBUPiB0aWNrOwp2b2lkIHNvbHZlKGludCBpZCkgewogICAgdmVjdG9yPGludD4gYW5zOwogICAgdGljay5yZXNldCgpOwogICAgZm9yIChpbnQgaSA9IG47IGk7IGktLSkgewogICAgICAgIGludCB2YWwgPSBIUFRbaV1baWRdOwogICAgICAgIGludCBjbnQgPSAoKHRpY2sgJiBIUFRbaV0pLmNvdW50KCkpICUgMjsKICAgICAgICBpZiAoY250ICE9IHZhbCkgewoJCQlpZiAoSFBUW2ldW2ldKSB7CgkJCQlhbnMucHVzaF9iYWNrKGkpOwoJCQkJdGlja1tpXSA9IDE7CgkJCX0KCQkJZWxzZSByZXR1cm4gY291dCA8PCAiLTEiLCB2b2lkKCk7CiAgICAgICAgfQogICAgfQoJLy8gcmV2ZXJzZShhbnMuYmVnaW4oKSwgYW5zLmVuZCgpKTsKICAgIGNvdXQgPDwgYW5zLnNpemUoKSA8PCAiXG4iOwogICAgLy8gZm9yIChpbnQgaXRlbTogYW5zKSBjb3V0IDw8IGl0ZW0gPDwgIiAiOwogICAgLy8gY291dCA8PCAiXG4iOwp9CgpzaWduZWQgbWFpbigpIHsKICAgIGNpbi50aWUoTlVMTCktPnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBpZihpZnN0cmVhbSgiSW5wdXQuaW5wIikpIHsKICAgICAgICBmcmVvcGVuKCJJbnB1dC5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKCJPdXRwdXQub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgY2luID4+IG4gPj4gbTsKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCUhQVFtpXVtpXSA9IDE7CgkJSFBUW2ldW24gKyAxXSA9IDE7Cgl9CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyBpKyspIHsKICAgICAgICBpbnQgdSwgdjsgY2luID4+IHUgPj4gdjsKICAgICAgICBIUFRbdV1bdl0gPSAxOyAgICAKICAgICAgICBIUFRbdl1bdV0gPSAxOwogICAgfQoJLy8gZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgkvLyAJZm9yIChpbnQgaiA9IDE7IGogPD0gbiArIDE7IGorKykgY2VyciA8PCBIUFRbaV1bal0gPDwgIiAiOwoJLy8gCWNlcnIgPDwgIlxuIjsKCS8vIH0KCS8vIGNlcnIgPDwgIlxuLS0tLVxuIjsKICAgIGZvciAoaW50IHUgPSAxOyB1IDw9IG47IHUrKykgewogICAgICAgIGZvciAoaW50IGkgPSB1ICsgMTsgaSA8PSBuOyBpKyspIGlmIChIUFRbaV1bdV0pIHsKICAgICAgICAgICAgaWYgKEhQVFt1XVt1XSkgSFBUW2ldIF49IEhQVFt1XTsKICAgICAgICAgICAgZWxzZSBzd2FwKEhQVFt1XSwgSFBUW2ldKTsKICAgICAgICB9CiAgICB9CgkvLyBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCS8vIAlmb3IgKGludCBqID0gMTsgaiA8PSBuICsgMTsgaisrKSBjZXJyIDw8IEhQVFtpXVtqXSA8PCAiICI7CgkvLyAJY2VyciA8PCAiXG4iOwoJLy8gfQoJLy8gY2VyciA8PCAiXG4tLS0tXG4iOwogICAgZm9yIChpbnQgcSA9IG4gKyAxOyBxIDw9IG4gKyAxOyBxKyspIHNvbHZlKHEpOwogICAgCgogICAgcmV0dXJuIDA7Cn0=