#include<bits/stdc++.h>
using namespace std;
int read(){
int x=0;
bool flag=false;
char ch=getchar();
while(ch>57||ch<48){
if(ch=='-'){
flag=true;
}
ch=getchar();
}
while(ch>=48&&ch<=57){
x=(x<<1)+(x<<3)+(ch-48);
ch=getchar();
}
return flag?-x:x;
}
int n,m,cf[200003],dep[200003],fa[200003][22],root;
vector<int>a[200003];
void dfs1(int u){
dep[u]=dep[fa[u][0]]+1;
for(int i=0;fa[u][i];i++){
fa[u][i+1]=fa[fa[u][i]][i];
}
for(int i=0;i<a[u].size();i++){
if(a[u][i]!=fa[u][0]){
dfs1(a[u][i]);
}
}
return;
}
int lca(int u,int v){
if(dep[u]<dep[v]){
swap(u,v);
}
for(int i=20;i>=0;i--){
if(dep[u]-(1<<i)>=dep[v]){
u=fa[u][i];
}
}
if(u==v){
return u;
}
for(int i=20;i>=0;i--){
if(fa[u][i]!=fa[v][i]){
u=fa[u][i],v=fa[v][i];
}
}
return fa[u][0];
}
void dfs(int u){
for(int i=0;i<a[u].size();i++){
if(a[u][i]!=fa[u][0]){
dfs(a[u][i]);
cf[u]+=cf[a[u][i]];
}
}
return;
}
int main(){
n=read(),m=read();
int u,v;
for(int i=1;i<n;i++){
u=read(),v=read();
a[u].push_back(v);
fa[v][0]=u;
}
for(int i=1;i<=n;i++){
if(fa[i][0]==0){
root=i;
break;
}
}
dfs1(root);
while(m--){
u=read(),v=read();
int l=lca(u,v);
cf[u]+=1,cf[v]+=1,cf[l]-=1,cf[fa[l][0]]-=1;
}
dfs(root);
for(int i=1;i<=n;i++){
cout<<cf[i]<<" ";
}
return 0;
}