#include <bits/stdc++.h>
using namespace std;
bool dp[1050000];
int Count[25];
int a[100005];
int n, m, d;
void input() {
  cin >> n >> m >> d;
  int t, temp;
  for (int i = 0; i < m; i++) {
    scanf("%d", &t);
    while (t--) {
      scanf("%d", &temp);
      a[temp] = i;
    }
  }
}
void init() {
  memset(dp, 0, sizeof(dp));
  memset(Count, 0, sizeof(Count));
  for (int i = 1; i <= d - 1; i++) Count[a[i]]++;
  for (int i = 1; i + d - 1 <= n; i++) {
    if (i - 1) Count[a[i - 1]]--;
    Count[a[i + d - 1]]++;
    int t = (1 << m) - 1;
    for (int j = 0; j < m; j++)
      if (Count[j])
        if (t & (1 << j)) t ^= (1 << j);
    dp[t] = 1;
  }
}
vector<int> v;
int main() {
  input();
  init();
  int ans = 1e9;
  for (int i = (1 << m) - 1; i >= 0; i--) {
    if (!dp[i]) {
      int t = 0;
      for (int j = 0; j < m; j++)
        if (i & (1 << j)) t++;
      ans = min(ans, t);
    } else {
      for (int j = 0; j < m; j++)
        if (i & (1 << j)) dp[i ^ (1 << j)] = 1;
    }
  }
  cout << ans << endl;
  return 0;
}
