#include <bits/stdc++.h>
const int N = 5e5 + 10;
int n, m, f[N], g[N], x[N], y[N], vis[N], a[N], b[N], c[N], d[N], mx[N], mn[N],
    cnt;
bool flg[N];
std::vector<std::pair<int, int>> to[N];
void dfs(int u) {
  vis[u] = 1;
  f[u] = 1;
  for (auto [v, w] : to[u])
    if (!vis[v])
      a[v] = u, b[v] = w, dfs(v);
    else if (vis[v] == -1) {
      int p = 0, q = 0;
      c[0] = 0;
      d[mn[cnt] = mx[cnt] = w] = ++cnt;
      flg[cnt] = 1;
      for (int x = v; x != u; x = a[x]) {
        d[c[++c[0]] = b[x]] = cnt;
        if (b[x] < mn[cnt]) mn[cnt] = b[x], p = c[0];
        if (b[x] > mx[cnt]) mx[cnt] = b[x], q = c[0];
      }
      c[++c[0]] = w;
      if (!p) p = c[0];
      if (!q) q = c[0];
      p += c[0];
      q += c[0];
      for (int i = 1; i <= c[0]; i++) c[i + c[0]] = c[i];
      for (int i = p < q ? p : p - c[0]; i < q; i++)
        if (c[i] > c[i + 1]) flg[cnt] = 0;
      for (int i = q < p ? q : q - c[0]; i < p; i++)
        if (c[i] < c[i + 1]) flg[cnt] = 0;
    }
  vis[u] = -1;
}
int main() {
  int i;
  scanf("%d%d", &n, &m);
  for (i = 1; i <= m; i++)
    scanf("%d%d", &x[i], &y[i]), to[x[i]].emplace_back(y[i], i),
        to[y[i]].emplace_back(x[i], i);
  dfs(1);
  for (i = m; i >= 1; i--)
    g[i] = f[x[i]] + f[y[i]] - (flg[d[i]] && i == mn[d[i]] ? g[mx[d[i]]] : 0),
    f[x[i]] = f[y[i]] = g[i];
  for (i = 1; i <= n; i++) printf("%d ", f[i] - 1);
  putchar('\n');
  return 0;
}
