//Түвшний нэвтрэлт. BFS
#include <queue>
#include <iostream>
using namespace std;
int n, m; // оройн тоо, ирмэгийн тоо
bool vis[50000]; // ирсэн ирээгүйг хадгалах массив.
vector<int> adj[50000]; // графын мэдээллийг хадгалах вектор.
queue< pair<int,int> > q; // bfs явах queue
int main() {
cin >> n >> m; // орой, ирмэгийн тоонуудыг унших.
for(int i = 1; i <= m; i++) {
int u, v; // i-р ирмэгийг тодорхойлох 2 орой.
// u болон v орой холбогддог гэсэн утгатай тул
cin >> u >> v;
adj[u].push_back( v );
adj[v].push_back( u );
}
int x, y; // x-ээс y хүртэл
cin >> x >> y; // хүсэлтээ унших
q.push( make_pair( x, 0 ) ); // анх x оройдээр 0 утгаар
while( !q.empty() ) { // хоосон биш л бол үргэлжилнэ.
int nowU = q.front().first; // одоо явж байгаа орой.
int nowW = q.front().second; // одоо явж байгаа оройн түвшин
vis[nowU] = 1; // nowU оройг ирсэн гэж тэмдэглэнэ.
if( nowU == y ) {
// nowU орой нь бидний хайсан Y орой бол энэ хүрээд зогсоно.
cout << nowW << endl; // хамгйин бага зардал.
return 0; // программыг зогсоож болно гэсэн үг юм.
}
q.pop(); // дараагийн элемэнтээс явах ёстой тул үүнийг устгана.
for(int i = 0; i < adj[nowU].size(); i++) {
int v = adj[nowU][i]; // одоо байгаа оройтой шууд ирмэгээр холбогдсон орой.
if( !vis[v] ) { // v орой тэмдэглэгдээгүй бол очиж ёстой.
q.push( make_pair( v, nowW+1 ) ); // энэ оройдээр одоо байгаа
// түвшиндээр нэмэх нь 1-ээр ирнэ.
}
}
}
cout << "Ochih bolomjgui!\n"; // хэрвээ бүрэн зогсоогүй бол очиж
// чадаагүй буюу очих боломжгүй гэсэн үг.
return 0;
}