#include <bits/stdc++.h>
using namespace std;
const int maxn = 10;
char g[maxn][maxn];
long long dp[1 << maxn][1 << maxn];
int main() {
  int n, mask1, mask2, i, j, m, k, a, b, count;
  long long ans;
  cin >> n >> m >> k;
  for (i = 0; i < m; i++) {
    cin >> a >> b;
    a--;
    b--;
    g[a][b] = g[b][a] = 1;
    dp[(1 << a) | (1 << b)][(1 << a) | (1 << b)] = 2;
  }
  for (mask1 = 0; mask1 < (1 << n); mask1++)
    for (mask2 = mask1; mask2; mask2 = (mask1 & (mask2 - 1))) {
      if (!dp[mask1][mask2]) continue;
      count = 0;
      for (i = 0; i < n; i++)
        if (mask2 & (1 << i)) count++;
      dp[mask1][mask2] /= count;
      for (i = 0; i < n; i++)
        if (mask1 & (1 << i))
          for (j = 0; j < n; j++)
            if (g[i][j] && !(mask1 & (1 << j))) {
              if (mask2 & (1 << i))
                dp[mask1 ^ (1 << j)][mask2 ^ (1 << i) ^ (1 << j)] +=
                    dp[mask1][mask2];
              else
                dp[mask1 ^ (1 << j)][mask2 ^ (1 << j)] += dp[mask1][mask2];
            }
    }
  ans = 0;
  for (i = 0; i < (1 << n); i++) {
    count = 0;
    for (j = 0; j < n; j++)
      if (i & (1 << j)) count++;
    if (count == k) ans += dp[(1 << n) - 1][i];
  }
  cout << ans;
}
