output_description: Print the number of the different paths that start from vertex 1 and visit all
  the vertices exactly once.
  
  * * *
input_description: The input is given from Standard Input in the following format:
  
      
      
      N M  
      a_1 b_1  
      a_2 b_2
      :  
      a_M b_M
attempt: import math
  import itertools
  
  INF = 10**9 + 7
  PRIME_NUM = [
      2,
      3,
      5,
      7,
      11,
      13,
      17,
      19,
      23,
      29,
      31,
      37,
      41,
      43,
      47,
      53,
      59,
      61,
      67,
      71,
      73,
      79,
      83,
      89,
      97,
      101,
      103,
      107,
      109,
      113,
      127,
      131,
      137,
      139,
      149,
      151,
      157,
      163,
      167,
      173,
      179,
      181,
      191,
      193,
      197,
      199,
      211,
      223,
      227,
      229,
      233,
      239,
      241,
      251,
      257,
      263,
      269,
      271,
      277,
      281,
      283,
      293,
      307,
      311,
      313,
      317,
      331,
      337,
      347,
      349,
      353,
      359,
      367,
      373,
      379,
      383,
      389,
      397,
      401,
      409,
      419,
      421,
      431,
      433,
      439,
      443,
      449,
      457,
      461,
      463,
      467,
      479,
      487,
      491,
      499,
      503,
      509,
      521,
      523,
      541,
      547,
      557,
      563,
      569,
      571,
      577,
      587,
      593,
      599,
      601,
      607,
      613,
      617,
      619,
      631,
      641,
      643,
      647,
      653,
      659,
      661,
      673,
      677,
      683,
      691,
      701,
      709,
      719,
      727,
      733,
      739,
      743,
      751,
      757,
      761,
      769,
      773,
      787,
      797,
      809,
      811,
      821,
      823,
      827,
      829,
      839,
      853,
      857,
      859,
      863,
      877,
      881,
      883,
      887,
      907,
      911,
      919,
      929,
      937,
      941,
      947,
      953,
      967,
      971,
      977,
      983,
      991,
      997,
  ]
  
  
  def main():
      n, m = map(int, input().split())
      ab = []
      for i in range(m):
          ab.append(list(map(int, input().split())))
      link = []
      for i in range(n + 1):
          link.append([])
      for i in ab:
          link[i[0]].append(i[1])
          link[i[1]].append(i[0])
      tmp = [i for i in range(2, n + 1)]
      ans = 0
      for i in itertools.permutations(tmp):
          flag = True
          array = [1] + list(i)
          for j in range(0, n - 1):
              if link[array[j]].count(array[j + 1]) == 0:
                  flag = False
          if flag:
              ans += 1
      print(ans)
  
  
  main()
  
problem_description: Statement
  
  You are given an undirected unweighted graph with N vertices and M edges that
  contains neither self-loops nor double edges.  
  Here, a _self-loop_ is an edge where a_i = b_i (1≤i≤M), and _double edges_ are
  two edges where (a_i,b_i)=(a_j,b_j) or (a_i,b_i)=(b_j,a_j) (1≤i<j≤M).  
  How many different paths start from vertex 1 and visit all the vertices
  exactly once?  
  Here, the endpoints of a path are considered visited.
  
  For example, let us assume that the following undirected graph shown in Figure
  1 is given.
  
  ![](https://atcoder.jp/img/5013/888b2f55d46f66125a4ac25cd8cfc19a.png)
  
  Figure 1: an example of an undirected graph
  
  The following path shown in Figure 2 satisfies the condition.
  
  ![](https://atcoder.jp/img/5013/694eda4639f3f4608c9f0b38af1633d3.png)
  
  Figure 2: an example of a path that satisfies the condition
  
  However, the following path shown in Figure 3 does not satisfy the condition,
  because it does not visit all the vertices.
  
  ![](https://atcoder.jp/img/5013/4739baf6665ab2832ea424b1cc404ee1.png)
  
  Figure 3: an example of a path that does not satisfy the condition
  
  Neither the following path shown in Figure 4, because it does not start from
  vertex 1.
  
  ![](https://atcoder.jp/img/5013/7ad401c30e069a98a34c8cfec70ec278.png)
  
  Figure 4: another example of a path that does not satisfy the condition
samples: [{"input": "3 3\n    1 2\n    1 3\n    2 3", "output": "2\n    \n\nThe given graph is shown in the following figure:\n\n![43c0ac53de20d989d100bf60b3cd05fa.png](https://atcoder.jp/img/5013/43c0ac53de20d989d100bf60b3cd05fa.png)\n\nThe following two paths satisfy the condition:\n\n![c4a27b591d364fa479314e3261b85071.png](https://atcoder.jp/img/5013/c4a27b591d364fa479314e3261b85071.png)\n\n* * *"}, {"input": "7 7\n    1 3\n    2 7\n    3 4\n    4 5\n    4 6\n    5 6\n    6 7", "output": "1\n    \n\nThis test case is the same as the one described in the problem statement."}]