#include<iostream>
#include<queue>
#include<vector>
#define inf 0x7fffffff
using namespace std;
int n,k;
int a,b,vis[1005],dis[1005];
vector<int> v[1005];
priority_queue<int> q;
void dijkstra(){
for(int i=1;i<=k;i++){
dis[i]=inf;
}
dis[1]=1;
q.push(1);
while(!q.empty()){
int x=q.top();
q.pop();
if(vis[x])continue;
vis[x]=1;
for(int i=0;i<v[x].size();i++){
if(!vis[v[x][i]] && dis[v[x][i]]>dis[x]+1){
dis[v[x][i]]=dis[x]+1;
q.push(v[x][i]);
}
}
}
}
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a>>b;
v[a].push_back(b);
}
dijkstra();
for(int i=1;i<=k;i++){
cout<<dis[i]<<" ";
}
if(dis[k]==inf){
cout<<-1;
}
else{
cout<<dis[k];
}
return 0;
}