#include <bits/stdc++.h>
#define my_angel QuynhNhu
//#define int long long
#define ll long long
#define ull unsigned long long
#define fi first
#define se second
#define endl "\n"
#define float double
#define ii pair<int,int>
#define all(a) (a).begin(), (a).end()
using namespace std;
const int N = 1e5 + 5;
const int mod = 1e9 + 7;
const int base = 1301;
int n, q, d[N];
vector<int> adj[N];
void add(int u, int v){
adj[u].push_back(v);
if (d[u] + 1 < d[v]){
d[v] = d[u] + 1;
queue<int> q;
q.push(v);
while (q.size()){
int u = q.front(); q.pop();
for (int v : adj[u]){
if (d[u] + 1 < d[v]){
d[v] = d[u] + 1;
q.push(v);
}
}
}
}
}
signed main(){
cin.tie(0) -> sync_with_stdio(false);
if (fopen( "input.inp" , "r" )){
freopen( "input.inp" , "r" , stdin );
freopen( "output.out" , "w" , stdout );
}
cin >> n >> q;
for (int i = 2; i <= n; ++i) d[i] = 1e9;
while (q--){
int t; cin >> t;
if (t == 0){
int u, v; cin >> u >> v;
add(u, v);
}
else {
int u; cin >> u;
if (d[u] == 1e9) cout << -1 << endl;
else cout << d[u] << endl;
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbXlfYW5nZWwgUXV5bmhOaHUKLy8jZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBlbmRsICJcbiIKI2RlZmluZSBmbG9hdCBkb3VibGUKI2RlZmluZSBpaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgYWxsKGEpIChhKS5iZWdpbigpLCAoYSkuZW5kKCkKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTiA9IDFlNSArIDU7CmNvbnN0IGludCBtb2QgPSAxZTkgKyA3Owpjb25zdCBpbnQgYmFzZSA9IDEzMDE7CgppbnQgbiwgcSwgZFtOXTsKdmVjdG9yPGludD4gYWRqW05dOwoKdm9pZCBhZGQoaW50IHUsIGludCB2KXsKICAgIGFkalt1XS5wdXNoX2JhY2sodik7CiAgICBpZiAoZFt1XSArIDEgPCBkW3ZdKXsKICAgICAgICBkW3ZdID0gZFt1XSArIDE7CiAgICAgICAgcXVldWU8aW50PiBxOwogICAgICAgIHEucHVzaCh2KTsKICAgICAgICB3aGlsZSAocS5zaXplKCkpewogICAgICAgICAgICBpbnQgdSA9IHEuZnJvbnQoKTsgcS5wb3AoKTsKICAgICAgICAgICAgZm9yIChpbnQgdiA6IGFkalt1XSl7CiAgICAgICAgICAgICAgICBpZiAoZFt1XSArIDEgPCBkW3ZdKXsKICAgICAgICAgICAgICAgICAgICBkW3ZdID0gZFt1XSArIDE7CiAgICAgICAgICAgICAgICAgICAgcS5wdXNoKHYpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgpzaWduZWQgbWFpbigpewogICAgY2luLnRpZSgwKSAtPiBzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoKICAgIGlmIChmb3BlbiggImlucHV0LmlucCIgLCAiciIgKSl7CiAgICAgICAgZnJlb3BlbiggImlucHV0LmlucCIgLCAiciIgLCBzdGRpbiApOwogICAgICAgIGZyZW9wZW4oICJvdXRwdXQub3V0IiAsICJ3IiAsIHN0ZG91dCApOwogICAgfQoKICAgIGNpbiA+PiBuID4+IHE7CiAgICBmb3IgKGludCBpID0gMjsgaSA8PSBuOyArK2kpIGRbaV0gPSAxZTk7CgogICAgd2hpbGUgKHEtLSl7CiAgICAgICAgaW50IHQ7IGNpbiA+PiB0OwogICAgICAgIGlmICh0ID09IDApewogICAgICAgICAgICBpbnQgdSwgdjsgY2luID4+IHUgPj4gdjsKICAgICAgICAgICAgYWRkKHUsIHYpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaW50IHU7IGNpbiA+PiB1OwogICAgICAgICAgICBpZiAoZFt1XSA9PSAxZTkpIGNvdXQgPDwgLTEgPDwgZW5kbDsKICAgICAgICAgICAgZWxzZSBjb3V0IDw8IGRbdV0gPDwgZW5kbDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K