import sys
from collections import defaultdict
def main():
N = int(sys.stdin.readline())
adj = defaultdict(set)
for _ in range(N):
a, b = map(int, sys.stdin.readline().split())
adj[a].add(b)
adj[b].add(a)
THRESHOLD = int(N ** 0.5)
heavy = {u for u in adj if len(adj[u]) > THRESHOLD}
# Precompute ffriend relation among heavy nodes
# For each heavy node h, for each neighbor z of h, mark (h, neighbor of z) as ffriends
heavy_ff = defaultdict(set)
for h in heavy:
for z in adj[h]:
for w in adj[z]:
if w != h and w not in adj[h]:
heavy_ff[h].add(w)
M = int(sys.stdin.readline())
for _ in range(M):
line = sys.stdin.readline().split()
qt = line[0]
if qt == 'N':
x = int(line[1])
print(len(adj[x]))
elif qt == 'F':
x, y = int(line[1]), int(line[2])
print('True' if y in adj[x] else 'False')
else: # FF
x, y = int(line[1]), int(line[2])
if y in adj[x]:
print('False')
continue
if x in heavy and y in heavy:
print('True' if y in heavy_ff[x] else 'False')
else:
# At least one is light, iterate the lighter one
sx, sy = adj[x], adj[y]
if len(sx) > len(sy):
sx, sy = sy, sx
for z in sx:
if z in sy:
print('True')
break
else:
print('False')
main()
aW1wb3J0IHN5cwpmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAoKZGVmIG1haW4oKToKICAgIE4gPSBpbnQoc3lzLnN0ZGluLnJlYWRsaW5lKCkpCiAgICBhZGogPSBkZWZhdWx0ZGljdChzZXQpCgogICAgZm9yIF8gaW4gcmFuZ2UoTik6CiAgICAgICAgYSwgYiA9IG1hcChpbnQsIHN5cy5zdGRpbi5yZWFkbGluZSgpLnNwbGl0KCkpCiAgICAgICAgYWRqW2FdLmFkZChiKQogICAgICAgIGFkaltiXS5hZGQoYSkKCiAgICBUSFJFU0hPTEQgPSBpbnQoTiAqKiAwLjUpCiAgICBoZWF2eSA9IHt1IGZvciB1IGluIGFkaiBpZiBsZW4oYWRqW3VdKSA+IFRIUkVTSE9MRH0KCiAgICAjIFByZWNvbXB1dGUgZmZyaWVuZCByZWxhdGlvbiBhbW9uZyBoZWF2eSBub2RlcwogICAgIyBGb3IgZWFjaCBoZWF2eSBub2RlIGgsIGZvciBlYWNoIG5laWdoYm9yIHogb2YgaCwgbWFyayAoaCwgbmVpZ2hib3Igb2YgeikgYXMgZmZyaWVuZHMKICAgIGhlYXZ5X2ZmID0gZGVmYXVsdGRpY3Qoc2V0KQogICAgZm9yIGggaW4gaGVhdnk6CiAgICAgICAgZm9yIHogaW4gYWRqW2hdOgogICAgICAgICAgICBmb3IgdyBpbiBhZGpbel06CiAgICAgICAgICAgICAgICBpZiB3ICE9IGggYW5kIHcgbm90IGluIGFkaltoXToKICAgICAgICAgICAgICAgICAgICBoZWF2eV9mZltoXS5hZGQodykKCiAgICBNID0gaW50KHN5cy5zdGRpbi5yZWFkbGluZSgpKQoKICAgIGZvciBfIGluIHJhbmdlKE0pOgogICAgICAgIGxpbmUgPSBzeXMuc3RkaW4ucmVhZGxpbmUoKS5zcGxpdCgpCiAgICAgICAgcXQgPSBsaW5lWzBdCgogICAgICAgIGlmIHF0ID09ICdOJzoKICAgICAgICAgICAgeCA9IGludChsaW5lWzFdKQogICAgICAgICAgICBwcmludChsZW4oYWRqW3hdKSkKCiAgICAgICAgZWxpZiBxdCA9PSAnRic6CiAgICAgICAgICAgIHgsIHkgPSBpbnQobGluZVsxXSksIGludChsaW5lWzJdKQogICAgICAgICAgICBwcmludCgnVHJ1ZScgaWYgeSBpbiBhZGpbeF0gZWxzZSAnRmFsc2UnKQoKICAgICAgICBlbHNlOiAgIyBGRgogICAgICAgICAgICB4LCB5ID0gaW50KGxpbmVbMV0pLCBpbnQobGluZVsyXSkKCiAgICAgICAgICAgIGlmIHkgaW4gYWRqW3hdOgogICAgICAgICAgICAgICAgcHJpbnQoJ0ZhbHNlJykKICAgICAgICAgICAgICAgIGNvbnRpbnVlCgogICAgICAgICAgICBpZiB4IGluIGhlYXZ5IGFuZCB5IGluIGhlYXZ5OgogICAgICAgICAgICAgICAgcHJpbnQoJ1RydWUnIGlmIHkgaW4gaGVhdnlfZmZbeF0gZWxzZSAnRmFsc2UnKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBBdCBsZWFzdCBvbmUgaXMgbGlnaHQsIGl0ZXJhdGUgdGhlIGxpZ2h0ZXIgb25lCiAgICAgICAgICAgICAgICBzeCwgc3kgPSBhZGpbeF0sIGFkalt5XQogICAgICAgICAgICAgICAgaWYgbGVuKHN4KSA+IGxlbihzeSk6CiAgICAgICAgICAgICAgICAgICAgc3gsIHN5ID0gc3ksIHN4CiAgICAgICAgICAgICAgICBmb3IgeiBpbiBzeDoKICAgICAgICAgICAgICAgICAgICBpZiB6IGluIHN5OgogICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnVHJ1ZScpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHByaW50KCdGYWxzZScpCgptYWluKCk=