#include <bits/stdc++.h>
using namespace std;
long n, m, d, sz[30];
long temp;
set<long> sett[30];
set<long>::iterator it;
long bst[1200000];
long val[1200000];
long ans;
long tmask;
long r;
long last[1000];
long bad[1200000];
long calc[1200000];
long gb(long x) {
  r = 0;
  for (int i = 0; i < m; i++)
    if (x & (1 << i)) ++r;
  return r;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n >> m >> d;
  for (int i = 0; i < m; i++) {
    cin >> sz[i];
    for (int j = 1; j <= sz[i]; j++) {
      cin >> temp;
      val[temp] = i;
    }
  }
  for (int i = 0; i < m; i++) last[i] = 0;
  for (int i = 1; i <= n; i++) {
    last[val[i]] = i;
    if (i >= d) {
      long mask = 0;
      for (int j = 0; j < m; j++)
        if (i - last[j] >= d) mask |= (1 << j);
      bad[mask] = 1;
    }
  }
  ans = 10050051;
  for (int mask = (1 << m) - 1; mask + 1; --mask) {
    if (bad[mask]) {
      for (int j = 0; j < m; j++)
        if (mask & (1 << j)) bad[mask ^ (1 << j)] = 1;
    } else
      ans = min(ans, gb(mask));
  }
  cout << ans << endl;
  cin.get();
  cin.get();
  return 0;
}
