루크는 여행지마다 그 도시의 대중교통을 타보는 것을 좋아한다. 그중에서도 한 역에서 출발해 다른 역을 적어도 하나 거친 뒤 출발한 역으로 돌아오는 순환 경로를 찾는 데 재미를 붙였다. 노선망마다 이런 순환 경로가 몇 개나 있는지 알고 싶어 한다.
루크가 세려는 것은 단순 순환이다. 단순 순환은 서로 다른 역의 나열 t1,t2,…,tj 로서, 1≤i<j 인 모든 i 에 대해 ti 에서 ti+1 로 바로 가는 연결이 있고, tj 에서 t1 로 바로 가는 연결도 있는 것을 말한다. 순환은 그 안의 어느 역에서든 시작해 적을 수 있으므로, 한 나열을 순환하듯 밀어서 얻은 나열은 모두 같은 단순 순환으로 본다. 반면 같은 역 집합을 다른 순서로 도는 두 단순 순환은 서로 다른 것으로 센다.
노선망에 서로 다른 단순 순환이 몇 개 있는지 세는 프로그램을 작성하시오.
첫째 줄에 노선망의 역 개수 m 이 주어진다 (3≤m≤9). 역에는 0 부터 m−1 까지 번호가 붙어 있다.
둘째 줄에 연결의 개수 n 이 주어진다 (1≤n≤m(m−1)). 이어지는 n 개 줄에 연결이 한 줄에 하나씩 주어진다. 각 줄은 두 정수 s 와 t 로 이루어지며 (0≤s<m, 0≤t<m, s=t), 역 s 에서 역 t 로 가는 일방통행 연결이 있다는 뜻이다.
노선망에 있는 서로 다른 단순 순환의 개수를 출력한다.