def go_in(x,y): seen=[x] d=[] for i in range(0,n+1): if i in l[x]: d.append(1) else: d.append(100000) for i in seen: for j in l[i]: if d[i]+1<d[j]: d[j]=d[i]+1 if not j in seen: seen.append(j) return d[y]+1 s=raw_input("") prop=s.split(" ") n=int(prop[0]) m=int(prop[1]) s=raw_input("") l=[] for i in range(0,n+1): l.append([]) for i in range(0,n-1): temp=raw_input("") prop=temp.split(" ") l[int(prop[0])].append(int(prop[1])) l[int(prop[1])].append(int(prop[0])) answ=[] for i in range(0,m): temp=raw_input("") prop=temp.split(" ") if int(prop[0])==2: n=n+1 l.append([]) l[int(prop[0])].append(n) l[n].append(int(prop[0])) else: answ.append(go_in(int(prop[1]),int(prop[2]))) print answ for i in answ: print i