output_description: If Ken cannot reach Vertex T from Vertex S by repeating ken-ken-pa, print -1.
  If he can, print the minimum number of ken-ken-pa needed to reach vertex T.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N M
      u_1 v_1
      :
      u_M v_M
      S T
attempt: from collections import deque
  
  # 頂点数、辺数
  N, M = list(map(int, input().split()))
  
  # 隣接リスト表現
  repn = [[[] for l in range(3)] for u in range(N)]
  for j in range(M):
      a, b = list(map(int, input().split()))
      a -= 1
      b -= 1
      repn[a][0].append((b, 1))
      repn[a][1].append((b, 2))
      repn[a][2].append((b, 0))
  
  # 気にする頂点、０オリジンなのでちょっといじった
  S, T = list(map(int, input().split()))
  s = S - 1
  t = T - 1
  
  # ＳからＴまで３の倍数でたどり着く最短経路を求めたい
  # 「３の倍数」の条件が無ければBFSで片付く
  # そこでグラフを３層にして「３の倍数」の条件を外す
  
  # 具体的にはグラフの頂点を (u, l) = {頂点uで階層lの点（l = 0, 1, 2）}
  # グラフの辺を(u, l) -> (v, l+1)と読み替える
  # 求めるのは(S, 0) -> (T, 0)の最短経路
  # 後はただのBFS
  
  color = [["WHITE" for l in range(3)] for u in range(N)]
  d = [[-1, -1, -1] for u in range(N)]
  Q = deque([])
  
  color[s][0] = "GRAY"
  d[s][0] = 0
  Q.append((s, 0))
  
  while len(Q) != 0:
      u, l = Q.popleft()
      for x in repn[u][l]:
          v, r = x
          if color[v][r] == "WHITE":
              color[v][r] = "GRAY"
              d[v][r] = d[u][l] + 1
              Q.append(x)
      color[u][l] = "BLACK"
  
  print(d[t][0] // 3)
  
problem_description: Statement
  
  Ken loves _ken-ken-pa_ (Japanese version of hopscotch). Today, he will play it
  on a directed graph G. G consists of N vertices numbered 1 to N, and M edges.
  The i-th edge points from Vertex u_i to Vertex v_i.
  
  First, Ken stands on Vertex S. He wants to reach Vertex T by repeating ken-
  ken-pa. In one ken-ken-pa, he does the following exactly three times: follow
  an edge pointing from the vertex on which he is standing.
  
  Determine if he can reach Vertex T by repeating ken-ken-pa. If the answer is
  yes, find the minimum number of ken-ken-pa needed to reach Vertex T. Note that
  visiting Vertex T in the middle of a ken-ken-pa does not count as reaching
  Vertex T by repeating ken-ken-pa.
samples: [{"input": "4 4\n    1 2\n    2 3\n    3 4\n    4 1\n    1 3", "output": "2\n    \n\nKen can reach Vertex 3 from Vertex 1 in two ken-ken-pa, as follows: 1\n\\rightarrow 2 \\rightarrow 3 \\rightarrow 4 in the first ken-ken-pa, then 4\n\\rightarrow 1 \\rightarrow 2 \\rightarrow 3 in the second ken-ken-pa. This is\nthe minimum number of ken-ken-pa needed.\n\n* * *"}, {"input": "3 3\n    1 2\n    2 3\n    3 1\n    1 2", "output": "-1\n    \n\nAny number of ken-ken-pa will bring Ken back to Vertex 1, so he cannot reach\nVertex 2, though he can pass through it in the middle of a ken-ken-pa.\n\n* * *"}, {"input": "2 0\n    1 2", "output": "-1\n    \n\nVertex S and Vertex T may be disconnected.\n\n* * *"}, {"input": "6 8\n    1 2\n    2 3\n    3 4\n    4 5\n    5 1\n    1 4\n    1 5\n    4 6\n    1 6", "output": "2"}]