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);
		}
		
	}
}