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