#include <bits/stdc++.h>
using namespace std;
const long long maxn = 1e5 + 10, maxl = 20, mod = 1e9 + 7, base = 737,
                inf = 2e18 + 13;
int n, m, k, dp[1 << 11][1 << 11];
vector<int> g[12];
int num(int x) {
  int res = 0;
  for (int i = 0; 1 << i <= x; i++)
    if ((1 << i) & x) res++;
  return res;
}
int lb(int leaf) {
  for (int i = 0; i < n; i++)
    if ((leaf >> i) & 1) return i;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> m >> k;
  for (int i = 0; i < m; i++) {
    int a, b;
    cin >> a >> b;
    g[--a].push_back(--b);
    g[b].push_back(a);
    dp[(1 << a) | (1 << b)][(1 << a) | (1 << b)] = 1;
  }
  for (int mask = 0; mask < 1 << n; mask++) {
    if (num(mask) <= 2) continue;
    for (int leaf = mask; leaf; leaf = (leaf - 1) & mask) {
      int v = lb(leaf);
      for (int i : g[v])
        if (((1 << i) & mask) && !((1 << i) & leaf)) {
          dp[mask][leaf] += dp[mask ^ (1 << v)][leaf ^ (1 << v)];
          dp[mask][leaf] += dp[mask ^ (1 << v)][leaf ^ (1 << v) ^ (1 << i)];
        }
    }
  }
  long long ans = 0;
  for (int i = 0; i < 1 << n; i++)
    if (num(i) == k) ans += dp[(1 << n) - 1][i];
  cout << ans << endl;
  return 0;
}
