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: n = int(input())
  edges = [list(map(int, input().split())) for _ in range(n - 1)]
  m = int(input())
  mm = [list(map(int, input().split())) for _ in range(m)]
  dp = [(1 << m) * [0] for _ in range(n)]
  for i in range(n):
      dp[i][0] = 1
  edge = [[] for _ in range(n)]
  for a, b in edges:
      edge[a - 1].append(b - 1)
      edge[b - 1].append(a - 1)
  tree = [-1] * n
  Q = [0]
  visited = {0}
  cnt = 0
  v = [[] for _ in range(n)]
  vv = [0] * n
  while Q:
      P = []
      for i in Q:
          f = True
          for j in edge[i]:
              if j in visited:
                  continue
              f = False
              tree[j] = i
              visited.add(j)
              P.append(j)
          v[cnt].append(i)
          vv[i] = cnt
      Q = P
      cnt += 1
  v = v[:cnt]
  ms = [set() for _ in range(m)]
  for i in range(m):
      ma, mb = mm[i]
      ma -= 1
      mb -= 1
      ms[i] = {ma, mb}
      if vv[ma] < vv[mb]:
          ma, mb = mb, ma
      if vv[ma] > vv[mb]:
          for j in range(vv[ma] - vv[mb]):
              ma = tree[ma]
              ms[i].add(ma)
      while ma != mb:
          ma = tree[ma]
          mb = tree[mb]
          ms[i] |= {ma, mb}
  for c in range(len(v) - 1, 0, -1):
      for i in v[c]:
          if c == len(v) - 1:
              dp[i][0] = 1
          jj = 0
          for j in range(m):
              jj *= 2
              if i in ms[j]:
                  jj += 1
          for j in range(1 << m):
              dp[tree[i]][j | jj] += dp[i][j]
  ans = 0
  jj = 0
  for j in range(m):
      jj *= 2
      if 0 in ms[j]:
          jj += 1
  for j in range(1 << m):
      if j | jj == (1 << m):
          ans += dp[0][j]
  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)"}]