#include <bits/stdc++.h>
using namespace std;
int n, m, d, s;
int x[100010];
int a[100010];
int vis[1 << 20];
void Input() {
  int i, j, k;
  scanf("%d %d %d", &n, &m, &d);
  for (i = 0; i < m; i++) {
    scanf("%d", &k);
    while (k--) {
      scanf("%d", &j);
      x[j] = i;
    }
  }
}
void Prepare() {
  int i, j, k;
  s = 0;
  for (i = 1; i <= d; i++) {
    k = x[i];
    if (a[k])
      a[k]++;
    else {
      a[k] = 1;
      s += 1 << k;
    }
  }
  vis[s] = 1;
  for (i = d + 1; i <= n; i++) {
    k = x[i];
    if (a[k])
      a[k]++;
    else {
      a[k] = 1;
      s += 1 << k;
    }
    k = x[i - d];
    a[k]--;
    if (!a[k]) s -= 1 << k;
    vis[s] = 1;
  }
}
void Solve() {
  int i, j, k;
  for (k = 1; k < (1 << m); k++)
    if (vis[k]) {
      for (i = 0; i < m; i++)
        if ((k & (1 << i)) == 0) vis[k + (1 << i)] = 1;
    }
  int ans = 0;
  for (k = 1; k < (1 << m); k++)
    if (!vis[k]) {
      for (j = i = 0; i < m; i++)
        if (k & (1 << i)) j++;
      if (ans < j) ans = j;
    }
  printf("%d\n", m - ans);
}
int main() {
  Input();
  Prepare();
  Solve();
  return 0;
}
