output_description: Print the number of ways to paint the edges that satisfy all of the M
  conditions.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      a_1 b_1
      :
      a_{N-1} b_{N-1}
      M
      u_1 v_1
      :
      u_M v_M
attempt: """
  包除原理
  すべての条件を満たしている
  2^{N-1}から「どれかの条件を満たしていない」を引けば良い
  i番目の条件を満たしていない確率はかんたんに計算できる
  Sに属していいないやつが全て条件を満たしていない確率については
  Sに対応する辺が全て白となる確率を考えれば良い
  """
  
  from collections import deque
  
  N = int(input())
  G = [[] for i in range(N)]
  a = [0 for i in range(N - 1)]
  b = [0 for i in range(N - 1)]
  edges = dict()
  for i in range(N - 1):
      a[i], b[i] = map(int, input().split())
      a[i] -= 1
      b[i] -= 1
      G[a[i]].append(b[i])
      G[b[i]].append(a[i])
      edges[(min(a[i], b[i]), max(a[i], b[i]))] = i
  M = int(input())
  u = [0 for i in range(M)]
  v = [0 for i in range(M)]
  for i in range(M):
      u[i], v[i] = map(int, input().split())
      u[i] -= 1
      v[i] -= 1
  root = [0 for i in range(M)]
  for i in range(M):
      q = deque([u[i]])
      parents = [-1 for i in range(N)]
      reached = [0 for i in range(N)]
      while len(q) > 0:
          r = q.popleft()
          reached[r] = 1
          for p in G[r]:
              if reached[p] == 1:
                  continue
              parents[p] = r
              q.append(p)
      x = v[i]
      while 1:
          if parents[x] == -1:
              break
          s = min(x, parents[x])
          t = max(x, parents[x])
          root[i] += 2 ** edges[(s, t)]
          x = parents[x]
  ans = 0
  
  
  def cnt(x):
      ans = 0
      for i in range(M):
          if x | (2**i) == x:
              ans += 1
      return ans
  
  
  q = deque([])
  q.append(0)
  S = [0 for i in range(2**M)]
  reached = [0 for i in range(2**M)]
  while len(q) > 0:
      i = q.popleft()
      for j in range(M):
          if i & (2**j) == 0:
              S[i | (2**j)] = S[i] | root[j]
              if reached[i | (2**j)] == 0:
                  q.append(i | (2**j))
                  reached[i | (2**j)] = 1
      ans += (-1) ** (cnt(i)) * 2 ** (N - bin(S[i]).count("1") - 1)
  print(ans)
  
problem_description: Statement
  
  We have a tree with N vertices numbered 1 to N. The i-th edge in this tree
  connects Vertex a_i and Vertex b_i.  
  Consider painting each of these edges white or black. There are 2^{N-1} such
  ways to paint the edges. Among them, how many satisfy all of the following M
  restrictions?
  
    * The i-th (1 \leq i \leq M) restriction is represented by two integers u_i and v_i, which mean that the path connecting Vertex u_i and Vertex v_i must contain at least one edge painted black.
samples: [{"input": "3\n    1 2\n    2 3\n    1\n    1 3", "output": "3\n    \n\nThe tree in this input is shown below:  \n  \n![Figure](https://img.atcoder.jp/ghi/5b0208ab1e3bb39a5d4fb7bafbfc448e.png)  \n  \nAll of the M restrictions will be satisfied if Edge 1 and 2 are respectively\npainted (white, black), (black, white), or (black, black), so the answer is 3.\n\n* * *"}, {"input": "2\n    1 2\n    1\n    1 2", "output": "1\n    \n\nThe tree in this input is shown below:  \n  \n![Figure](https://img.atcoder.jp/ghi/d08b3f53dfa4857fe9ffe13fa5d7ae69.png)  \n  \nAll of the M restrictions will be satisfied only if Edge 1 is painted black,\nso the answer is 1.\n\n* * *"}, {"input": "5\n    1 2\n    3 2\n    3 4\n    5 3\n    3\n    1 3\n    2 4\n    2 5", "output": "9\n    \n\nThe tree in this input is shown below:  \n  \n![Figure](https://img.atcoder.jp/ghi/386502bb3c85e0bb5aee64e4e7c087a1.png)  \n  \n\n* * *"}, {"input": "8\n    1 2\n    2 3\n    4 3\n    2 5\n    6 3\n    6 7\n    8 6\n    5\n    2 7\n    3 5\n    1 6\n    2 8\n    7 8", "output": "62\n    \n\nThe tree in this input is shown below:  \n  \n![Figure](https://img.atcoder.jp/ghi/955fa8fd8af658abb24ff2f68b9997be.png)"}]