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: #!/usr/bin/env python
  
  import sys
  
  v1mask = set()
  v2mask = set()
  
  
  def getVertex(i, e):
      global v1mask, v2mask
      v = set()
      for v1 in e[i]:
          if v1 in v1mask:
              continue
          v1mask.add(v1)
          for v2 in e[v1]:
              if v2 in v2mask:
                  continue
              v2mask.add(v2)
              for v3 in e[v2]:
                  v.add(v3)
      #
      return v
  
  
  #
  n, m = [int(x) for x in sys.stdin.readline().split()]
  e = {i: [] for i in range(n)}
  for _ in range(m):
      u, v = [int(x) for x in sys.stdin.readline().split()]
      e[u - 1].append(v - 1)
  s, t = [int(x) - 1 for x in sys.stdin.readline().split()]
  #
  hop = 0
  now = {s}
  visit = {s}
  while True:
      hop += 1
      n = set()
      for i in now:
          n |= getVertex(i, e) - visit
          if t in n:
              break
      #
      if t in n:
          break
      if not n:
          hop = -1
          break
      now = n
      visit |= n
  #
  print(hop)
  
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"}]