//EGOI 2025 Currents
//https://qoj.ac/contest/2344/problem/13170
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vll = vector<ll>;
using pll = pair<ll,ll>;
using vpll = vector<pll>;
int main(){
ll n, m, a, b;
cin >> n >> m;
vll g[n], gr[n], dis(n,-1); dis[0]=0;
for(int i=0; i<m; i++){
cin >> a >> b;
g[a].push_back(b); gr[b].push_back(a);
}
queue<ll> q; q.push(0); vll ans(n,1e18); ans[n-1]=0;
while(!q.empty()){
auto v=q.front(); q.pop();
for(auto u:g[v]) if(dis[u]==-1) q.push(u), dis[u]=dis[v]+1;
}
priority_queue<pll,vpll,greater<pll>> pq; pq.push({0,n-1});
while(!pq.empty()){
auto [w,v]=pq.top(); pq.pop();
if(w>ans[v]) continue;
for(auto u:gr[v]){
ll x=max(dis[u],w+1);
if(x<ans[u]) ans[u]=x, pq.push({x,u});
}
}
for(int i=0; i<n-1; i++) cout << ans[i] << " ";
cout << "\n";
return 0;
}