#include <bits/stdc++.h>
using namespace std;
const int N = 1e6, M = 25;
vector<int> v[M];
int s[N], cnt[N];
bool dp[N];
int main() {
  int n, m, d;
  cin >> n >> m >> d;
  for (int i = 0; i < m; i++) {
    int t;
    cin >> t;
    for (int j = 0; j < t; j++) {
      int a;
      cin >> a;
      s[a] = i;
    }
  }
  for (int i = 1; i <= n; i++) {
    cnt[s[i]]++;
    if (i >= d) {
      if (i > d) cnt[s[i - d]]--;
      int val = 0;
      for (int j = 0; j < m; j++) {
        if (cnt[j] > 0) val += (1 << j);
      }
      dp[val] = true;
    }
  }
  int ans = 0;
  for (int i = 0; i < (1 << m); i++) {
    int cnt = 0;
    for (int j = 0; j < m; j++) {
      if ((i & (1 << j)) && dp[i - (1 << j)]) dp[i] = true;
      if (i & (1 << j)) cnt++;
    }
    if (!dp[i]) ans = max(ans, cnt);
  }
  cout << m - ans;
}
