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