import java.util.ArrayList;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
while(s.hasNext()){
String[] ss = s.nextLine().split("\\s+");
int n = Integer.parseInt(ss[0]);//n条
int m = Integer.parseInt(ss[1]); //间隔
int c = Integer.parseInt(ss[2]);//颜色数量
ArrayList<ArrayList<Integer>> list = new ArrayList<>();
for(int i =0; i <n; i++){
String[] str = s.nextLine().split("\\s+");
ArrayList<Integer> arr = new ArrayList<>();
for(int j= 0; j<str.length; j++){
arr.add(Integer.parseInt(str[j]));
}
int zhonglei = arr.remove(0);
if(zhonglei == 0)
arr.add(-1);
list.add(arr);
}
ArrayList<ArrayList<Integer>> list1 = new ArrayList<>();
for(int i=1; i<=c; i++){
ArrayList<Integer> arr = new ArrayList<>();
for(int j=0; j<list.size(); j++){
if(list.get(j).contains(i)){
arr.add(j+1); // 存储相同颜色所在的串序号
}
}
list1.add(arr);
}
int countColor=0;
for(int i=0; i<list1.size();i++){ // 每个组进行判断
if(list1.get(i).size()==1){ //相同颜色组只有一个元素跳过
continue;
}
// size>=2 判断最后一个和第一个相差多远
if(list1.get(i).get(0)+list1.get(i).size()-list1.get(i).get(list1.get(i).size()-1)-1<m){
countColor++;
continue;
}
//判断相邻的相差多远
for(int j=0; j<list1.get(i).size()-1;j++){
if(list1.get(i).get(j+1)-list1.get(i).get(j)<m){
countColor++;
break;
}
}
}
System.out.println(countColor);
}
}
}