def union(x,y): rx=root(x) ry=root(y) if rx==ry: return if rx>ry: rx,ry=ry,rx r[ry]=rx return def root(x): p=x l=[p] while r[p]!=p: p=r[p] l+=[p] for p in l: r[p]=l[-1] return r[x] n,Q=map(int,input().split()) e=[] for i in range(n-1): a,b=map(int,input().split()) e+=[(a-1,b-1)] p=[] for i in range(Q): s,t=map(int,input().split()) p+=[(s-1,t-1)] ok=[n-1]*Q ng=[-1]*Q while 1: f=0 m=[[] for i in range(n-1)] for i in range(Q): if abs(ok[i]-ng[i])>1: m[(ok[i]+ng[i])//2]+=[i] f=1 if f==0: break r=list(range(n)) for i in reversed(range(n-1)): for j in m[i]: s,t=p[j] if root(s)!=root(t): ok[j]=i else: ng[j]=i a,b=e[i] union(a,b) c=[0]*n c[0]=Q for i in range(Q): c[ok[i]]-=1 for i in range(1,n-1): c[i]+=c[i-1] print(*c[:n-1],sep="\n")