#include <bits/stdc++.h>
using namespace std;
const int maxn = 1024 + 10;
int dp[maxn][maxn];
bool g[20][20];
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  for (int i = 0; i < m; i++) {
    int u, v;
    cin >> u >> v;
    u--, v--;
    g[u][v] = g[v][u] = 1;
  }
  for (int mask = 0; mask < (1 << n); mask++) {
    int x = __builtin_popcount(mask);
    if (x < 2) continue;
    for (int sub = mask; sub; sub = (sub - 1) & mask) {
      if (__builtin_popcount(sub) < 2) continue;
      vector<int> v;
      for (int i = 0; i < n; i++)
        if (sub >> i & 1) v.push_back(i);
      int t = v[0];
      if (x == 2) {
        dp[mask][sub] = g[t][v[1]];
        continue;
      }
      for (int i = 0; i < n; i++) {
        if (mask >> i & 1) {
          if (sub >> i & 1) continue;
          if (!g[i][t]) continue;
          dp[mask][sub] += dp[mask ^ (1 << t)][sub ^ (1 << t)];
          dp[mask][sub] += dp[mask ^ (1 << t)][sub ^ (1 << t) ^ (1 << i)];
        }
      }
    }
  }
  int ans = 0;
  for (int sub = 0; sub < (1 << n); sub++)
    if (__builtin_popcount(sub) == k) ans += dp[(1 << n) - 1][sub];
  cout << ans << endl;
}
