import std.algorithm;
import std.array;
import std.range;
import std.stdio;
import std.string;

void main ()
{
	int n;
	int m;
	while (readf (" %s %s", &n, &m) > 0)
	{
		auto a = new bool [] [] (n, n);
		foreach (j; 0..m)
		{
			int u, v;
			readf (" %s %s", &u, &v);
			u -= 1;
			v -= 1;
			a[u][v] = true;
			a[v][u] = true;
		}
		auto t = 1 << n;
		auto f = new int [] [] (t, n);
		f[1][0] = 1;
		foreach (s; 0..t)
		{
			foreach (v; 0..n) if (s & (1 << v))
			{
				foreach (u; 0..n) if (!(s & (1 << u)))
				{
					if (a[v][u])
					{
						int r = s | (1 << u);
						f[r][u] += f[s][v];
					}
				}
			}
		}
		writeln (sum (f[t - 1][]));
	}
}
