#include <bits/stdc++.h>
using namespace std;
const int N = (1 << 10) + 5;
int n, m, k, x, y, dp[N][N];
long long ans;
bool used[15][15];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> k;
  for (int i = 1; i <= m; i++) {
    cin >> x >> y;
    x--, y--;
    used[x][y] = used[y][x] = true;
    dp[(1 << x) | (1 << y)][(1 << x) | (1 << y)] = 1;
  }
  for (int mask = 1; mask < (1 << n); mask++) {
    for (int submask = 1; submask < (1 << n); submask++) {
      if (mask | (submask) == mask) {
        int tupik = 0;
        while (!(submask & (1 << tupik))) {
          tupik++;
        }
        for (int i = 0; i < n; i++) {
          if (used[tupik][i] && mask & (1 << i) && !(submask & (1 << i))) {
            dp[mask][submask] +=
                dp[mask ^ (1 << tupik)][submask ^ (1 << tupik)] +
                dp[mask ^ (1 << tupik)][submask ^ (1 << tupik) ^ (1 << i)];
          }
        }
      }
    }
  }
  for (int mask = 0; mask < (1 << n); mask++) {
    if (__builtin_popcount(mask) == k) {
      ans += dp[(1 << n) - 1][mask];
    }
  }
  cout << ans;
}
