#include <bits/stdc++.h>
int n, m, k, ans, x, y, c[2050], f[2050][2050];
bool a[15][15];
int dfs(int x, int y) {
  int &res = f[x][y];
  if (res >= 0) return res;
  res = 0;
  for (int i = 0; i < n; i++)
    if (y & 1 << i) {
      if (c[x] == 2)
        for (int j = 0; j < n; j++)
          if (y & 1 << j && a[i][j]) return res = 1;
      for (int j = 0; j < n; j++)
        if (a[i][j] && x & 1 << j && !(y & 1 << j))
          res += dfs(x ^ 1 << i, y ^ 1 << i) +
                 dfs(x ^ 1 << i, y ^ 1 << i ^ 1 << j);
      break;
    }
  return res;
}
int main() {
  scanf("%d%d%d", &n, &m, &k), memset(f, -1, sizeof(f));
  for (int i = 1; i <= m; i++)
    scanf("%d%d", &x, &y), x--, y--, a[x][y] = a[y][x] = 1;
  for (int i = 1; i < 1 << n; i++) c[i] = c[i - (i & -i)] + 1;
  for (int i = 0; i < 1 << n; i++)
    if (c[i] == k) ans += dfs((1 << n) - 1, i);
  printf("%d\n", ans);
  return 0;
}
