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: from collections import defaultdict
  import sys
  
  sys.setrecursionlimit(10**6)
  int1 = lambda x: int(x) - 1
  p2D = lambda x: print(*x, sep="\n")
  
  
  def II():
      return int(sys.stdin.readline())
  
  
  def MI():
      return map(int, sys.stdin.readline().split())
  
  
  def MI1():
      return map(int1, sys.stdin.readline().split())
  
  
  def LI():
      return list(map(int, sys.stdin.readline().split()))
  
  
  def LLI(rows_number):
      return [LI() for _ in range(rows_number)]
  
  
  def SI():
      return sys.stdin.readline()[:-1]
  
  
  def main():
      def dfs(u, v, pu=-1):
          if u == v:
              return True
          for cu in to[u]:
              if cu == pu:
                  continue
              if dfs(cu, v, u):
                  path.append(uvtoi[u, cu])
                  return True
          return False
  
      to = defaultdict(list)
      n = II()
      uvtoi = {}
      for i in range(n - 1):
          a, b = MI1()
          to[a].append(b)
          to[b].append(a)
          uvtoi[a, b] = i
          uvtoi[b, a] = i
      m = II()
      itoj = defaultdict(list)
      for j in range(m):
          u, v = MI1()
          path = []
          dfs(u, v)
          # print(path)
          for i in path:
              itoj[i].append(j)
      # print(itoj)
      en = len(itoj)
      dp = [[0] * (1 << m) for _ in range(en + 1)]
      dp[0][0] = 1
      for i, jj in enumerate(itoj.values()):
          mask = sum(1 << j for j in jj)
          for bit in range(1 << m):
              pre = dp[i][bit]
              if pre == 0:
                  continue
              dp[i + 1][bit | mask] += pre
              dp[i + 1][bit] += pre
      # print(dp)
      ans = dp[-1][-1] * pow(2, n - 1 - en)
      print(ans)
  
  
  main()
  
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)"}]