#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define pii pair<int, int>
#define F first
#define S second
const int maxn = 5e5+10;
const int mod = 998244353;
const LL inf = 1e9;
int n, m;
vector<int> v[maxn], dv[maxn];
int dis[maxn];
int vis[maxn];
vector<int> ans;
signed main() {
ios_base::sync_with_stdio(0); cin.tie(0);
cin>>n>>m;
while(m--){
int a, b; cin>>a>>b;
v[a].push_back(b);
dv[b].push_back(a);
}
queue< pair<int, int> > dq;
dq.push({0, 0});
vis[0]=1;
while( !dq.empty() ){
auto[x, val]=dq.front(); dq.pop();
for(int y: v[x]){
if(vis[y]) continue;
vis[y] = 1;
dis[y] = val + 1;
dq.push({y, val+1});
}
}
ans.assign(n, inf);
priority_queue< pii, vector<pii>, greater<pii> > q;
q.push({0, n-1});
ans[n-1]=0;
while( !q.empty() ){
auto[val, x] = q.top(); q.pop();
// ans[x] = max(ans[x], dis[x]);
for(int y: dv[x]){
if(ans[y] <= ans[x]+1) continue;
ans[y] = max( dis[y], ans[x] + 1);
q.push({ans[y], y});
}
}
for(int i=0; i<n-1; i++) cout<<ans[i]<<" ";
return 0;
}