#include <bits/stdc++.h>
#define el '\n'
#define fi first
#define sec second
#define pb push_back
#define int long long
#define pii pair<int,int>
#define sz(v) (int)(v).size()
#define all(v) (v).begin(),(v).end()
#define FOR(i, a, b) for(int i = (a), _b = (b); i <= _b; i++)
#define REP(i, a, b) for(int i = (a), _b = (b); i >= _b; i--)
using namespace std;
const int INF = (int)1e18 + 462010;
const int MAX_N = 1e5;
const int LOG = 17;
vector<int> g[MAX_N + 5];
int best[MAX_N + 5];
int n, q;
namespace Centroid_Decomposition{
int dist[LOG + 5][MAX_N + 5], lv[MAX_N + 5];
int sub[MAX_N + 5], par[MAX_N + 5];
vector<int> adj[MAX_N + 5];
bool removed[MAX_N + 5];
int root;
void dfs_sz(int u, int dad){
sub[u] = 1;
for(int v : g[u]) if(v != dad && !removed[v]){
dfs_sz(v, u);
sub[u] += sub[v];
}
}
int find_centroid(int u, int dad, int total){
for(int v : g[u]) if(v != dad && !removed[v] && sub[v] > total / 2){
return find_centroid(v, u, total);
}
return u;
}
void dfs_dist(int u, int dad, int level, int d){
dist[level][u] = d;
for(int v : g[u]) if(v != dad && !removed[v]){
dfs_dist(v, u, level, d + 1);
}
}
void build_centroid(int u, int pre, int level){
dfs_sz(u, 0);
int centroid = find_centroid(u, 0, sub[u]);
if(!root) root = centroid;
removed[centroid] = true;
lv[centroid] = level;
dfs_dist(centroid, 0, level, 0);
if(pre != -1){
adj[pre].pb(centroid);
par[centroid] = pre;
}
for(int v : g[centroid]) if(!removed[v]){
build_centroid(v, centroid, level + 1);
}
}
void paint(int u){
for(int v = u; v != 0; v = par[v]){
best[v] = min(best[v], dist[lv[v]][u]);
}
}
int query(int u){
int res = INF;
for(int v = u; v != 0; v = par[v]){
res = min(res, best[v] + dist[lv[v]][u]);
}
return res;
}
} using namespace Centroid_Decomposition;
void Input(){
cin >> n >> q;
FOR(i, 1, n - 1){
int u, v;
cin >> u >> v;
g[u].pb(v);
g[v].pb(u);
}
}
void Prepare(){
build_centroid(1, -1, 0);
FOR(u, 1, n) best[u] = INF;
}
void Solve(){
paint(1);
while(q--){
int type, x;
cin >> type >> x;
if(type == 1) paint(x);
else cout << query(x) << el;
}
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
Input();
Prepare();
Solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGVsICdcbicKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlYyBzZWNvbmQKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBzeih2KSAoaW50KSh2KS5zaXplKCkKI2RlZmluZSBhbGwodikgKHYpLmJlZ2luKCksKHYpLmVuZCgpCiNkZWZpbmUgRk9SKGksIGEsIGIpIGZvcihpbnQgaSA9IChhKSwgX2IgPSAoYik7IGkgPD0gX2I7IGkrKykKI2RlZmluZSBSRVAoaSwgYSwgYikgZm9yKGludCBpID0gKGEpLCBfYiA9IChiKTsgaSA+PSBfYjsgaS0tKQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBJTkYgPSAoaW50KTFlMTggKyA0NjIwMTA7CmNvbnN0IGludCBNQVhfTiA9IDFlNTsKY29uc3QgaW50IExPRyA9IDE3OwoKdmVjdG9yPGludD4gZ1tNQVhfTiArIDVdOwppbnQgYmVzdFtNQVhfTiArIDVdOwppbnQgbiwgcTsKCm5hbWVzcGFjZSBDZW50cm9pZF9EZWNvbXBvc2l0aW9uewogICAgaW50IGRpc3RbTE9HICsgNV1bTUFYX04gKyA1XSwgbHZbTUFYX04gKyA1XTsKICAgIGludCBzdWJbTUFYX04gKyA1XSwgcGFyW01BWF9OICsgNV07CiAgICB2ZWN0b3I8aW50PiBhZGpbTUFYX04gKyA1XTsKICAgIGJvb2wgcmVtb3ZlZFtNQVhfTiArIDVdOwogICAgaW50IHJvb3Q7CgogICAgdm9pZCBkZnNfc3ooaW50IHUsIGludCBkYWQpewogICAgICAgIHN1Ylt1XSA9IDE7CiAgICAgICAgZm9yKGludCB2IDogZ1t1XSkgaWYodiAhPSBkYWQgJiYgIXJlbW92ZWRbdl0pewogICAgICAgICAgICBkZnNfc3oodiwgdSk7CiAgICAgICAgICAgIHN1Ylt1XSArPSBzdWJbdl07CiAgICAgICAgfQogICAgfQoKICAgIGludCBmaW5kX2NlbnRyb2lkKGludCB1LCBpbnQgZGFkLCBpbnQgdG90YWwpewogICAgICAgIGZvcihpbnQgdiA6IGdbdV0pIGlmKHYgIT0gZGFkICYmICFyZW1vdmVkW3ZdICYmIHN1Ylt2XSA+IHRvdGFsIC8gMil7CiAgICAgICAgICAgIHJldHVybiBmaW5kX2NlbnRyb2lkKHYsIHUsIHRvdGFsKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHU7CiAgICB9CgogICAgdm9pZCBkZnNfZGlzdChpbnQgdSwgaW50IGRhZCwgaW50IGxldmVsLCBpbnQgZCl7CiAgICAgICAgZGlzdFtsZXZlbF1bdV0gPSBkOwogICAgICAgIGZvcihpbnQgdiA6IGdbdV0pIGlmKHYgIT0gZGFkICYmICFyZW1vdmVkW3ZdKXsKICAgICAgICAgICAgZGZzX2Rpc3QodiwgdSwgbGV2ZWwsIGQgKyAxKTsKICAgICAgICB9CiAgICB9CgogICAgdm9pZCBidWlsZF9jZW50cm9pZChpbnQgdSwgaW50IHByZSwgaW50IGxldmVsKXsKICAgICAgICBkZnNfc3oodSwgMCk7CiAgICAgICAgaW50IGNlbnRyb2lkID0gZmluZF9jZW50cm9pZCh1LCAwLCBzdWJbdV0pOwoKICAgICAgICBpZighcm9vdCkgcm9vdCA9IGNlbnRyb2lkOwogICAgICAgIHJlbW92ZWRbY2VudHJvaWRdID0gdHJ1ZTsKICAgICAgICBsdltjZW50cm9pZF0gPSBsZXZlbDsKCiAgICAgICAgZGZzX2Rpc3QoY2VudHJvaWQsIDAsIGxldmVsLCAwKTsKCiAgICAgICAgaWYocHJlICE9IC0xKXsKICAgICAgICAgICAgYWRqW3ByZV0ucGIoY2VudHJvaWQpOwogICAgICAgICAgICBwYXJbY2VudHJvaWRdID0gcHJlOwogICAgICAgIH0KCiAgICAgICAgZm9yKGludCB2IDogZ1tjZW50cm9pZF0pIGlmKCFyZW1vdmVkW3ZdKXsKICAgICAgICAgICAgYnVpbGRfY2VudHJvaWQodiwgY2VudHJvaWQsIGxldmVsICsgMSk7CiAgICAgICAgfQogICAgfQoKICAgIHZvaWQgcGFpbnQoaW50IHUpewogICAgICAgIGZvcihpbnQgdiA9IHU7IHYgIT0gMDsgdiA9IHBhclt2XSl7CiAgICAgICAgICAgIGJlc3Rbdl0gPSBtaW4oYmVzdFt2XSwgZGlzdFtsdlt2XV1bdV0pOwogICAgICAgIH0KICAgIH0KCiAgICBpbnQgcXVlcnkoaW50IHUpewogICAgICAgIGludCByZXMgPSBJTkY7CiAgICAgICAgZm9yKGludCB2ID0gdTsgdiAhPSAwOyB2ID0gcGFyW3ZdKXsKICAgICAgICAgICAgcmVzID0gbWluKHJlcywgYmVzdFt2XSArIGRpc3RbbHZbdl1dW3VdKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlczsKICAgIH0KfSB1c2luZyBuYW1lc3BhY2UgQ2VudHJvaWRfRGVjb21wb3NpdGlvbjsKCnZvaWQgSW5wdXQoKXsKICAgIGNpbiA+PiBuID4+IHE7CiAgICBGT1IoaSwgMSwgbiAtIDEpewogICAgICAgIGludCB1LCB2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CgogICAgICAgIGdbdV0ucGIodik7CiAgICAgICAgZ1t2XS5wYih1KTsKICAgIH0KfQoKdm9pZCBQcmVwYXJlKCl7CiAgICBidWlsZF9jZW50cm9pZCgxLCAtMSwgMCk7CiAgICBGT1IodSwgMSwgbikgYmVzdFt1XSA9IElORjsKfQoKdm9pZCBTb2x2ZSgpewogICAgcGFpbnQoMSk7CiAgICB3aGlsZShxLS0pewogICAgICAgIGludCB0eXBlLCB4OwogICAgICAgIGNpbiA+PiB0eXBlID4+IHg7CgogICAgICAgIGlmKHR5cGUgPT0gMSkgcGFpbnQoeCk7CiAgICAgICAgZWxzZSBjb3V0IDw8IHF1ZXJ5KHgpIDw8IGVsOwogICAgfQp9CgpzaWduZWQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CgogICAgSW5wdXQoKTsKICAgIFByZXBhcmUoKTsKICAgIFNvbHZlKCk7CgogICAgcmV0dXJuIDA7Cn0K