#include <bits/stdc++.h>
using namespace std;
int n, m, d, a[100005], S, sum[20], vis[1 << 20], ans = (1 << 30);
void update(int S) {
  int i, w = 0;
  for (i = 0; i < m; i++)
    if ((S >> i) & 1) w++;
  ans = min(ans, w);
}
int main() {
  int i, k, j, x;
  scanf("%d %d %d", &n, &m, &d);
  for (i = 1; i <= m; i++) {
    scanf("%d", &k);
    for (j = 1; j <= k; j++) scanf("%d", &x), a[x] = i - 1;
  }
  for (i = 0; i < d; i++) sum[a[i]]++;
  for (i = d; i <= n; i++) {
    sum[a[i - d]]--, sum[a[i]]++;
    for (j = S = 0; j < m; j++)
      if (sum[j]) S |= (1 << j);
    vis[((1 << m) - 1) ^ S] = 1;
  }
  for (i = (1 << m) - 1; i >= 0; i--)
    if (!vis[i])
      update(i);
    else {
      for (j = 0; j < m; j++)
        if ((i >> j) & 1) vis[i ^ (1 << j)] = 1;
    }
  cout << ans;
  return 0;
}
