#include using namespace std; struct S { int l, r, v; }; int n; vector g; int bfs(int a, int b){ queue q; vector done(n, false); q.push({a, b, 0}); while(!q.empty()) { int l = q.front().l, r = q.front().r, d = q.front().v; //cerr << "visit: " << l << ' ' << r << ' ' << d << endl; q.pop(); if(g[l].v != g[r].v){ //cerr << "RETURN " << d << endl; return d; } if(done[l]) continue; done[l] = true; q.push({g[l].l, g[r].l, d+1}); q.push({g[l].r, g[r].r, d+1}); } return n+10; } int main() { int a, b; cin >> n >> a >> b; g.resize(n); for(auto &x : g) cin >> x.l >> x.r >> x.v; if(g[a].v != g[b].v) { cout << 0 << endl; return 0; } int d = min(bfs(a,b), bfs(b,a)); if(d <= n) cout << d << endl; else cout << "INDISTINGUISHABLE" << endl; return 0; }