#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, m, k;
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> m >> k;
  vector<vector<int> > dp(1 << n, vector<int>(1 << n, 0));
  vector<int> G[n];
  int all = (1 << n) - 1;
  for (int i = 1; i <= m; ++i) {
    int u, v;
    cin >> u >> v;
    u--;
    v--;
    G[u].emplace_back(v);
    G[v].emplace_back(u);
    dp[(1 << u) | (1 << v)][(1 << u) | (1 << v)]++;
  }
  for (int m1 = 0; m1 < (1 << n); m1++) {
    for (int m2 = 0; m2 < (1 << n); m2++) {
      if (!dp[m1][m2]) continue;
      for (int i = 0; i < n; i++) {
        if (!(m1 >> i & 1)) continue;
        for (auto v : G[i]) {
          if (m1 >> v & 1) continue;
          int m3 = (m2 | (1 << v)) & (all ^ (1 << i));
          if (!((m3 >> v) ^ 1)) dp[m1 | (1 << v)][m3] += dp[m1][m2];
        }
      }
    }
  }
  long long res = 0;
  for (int i = 0; i <= all; i++) {
    if (__builtin_popcount(i) == k) res += dp[all][i];
  }
  cout << res << "\n";
  return 0;
}
