import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        q_2();
    }

    private static void q_1() {
        try (Scanner scan = new Scanner(System.in)) {
            int a = scan.nextInt();
            int b = scan.nextInt();

            System.out.println(b % a == 0 ? b + a : b - a);
        }
    }

    private static void q_2() {
        try (Scanner scan = new Scanner(System.in)) {
            int n = scan.nextInt(); // n人
            int m = scan.nextInt(); // m種類

            Map<Integer, Integer> a = new HashMap<>();
            for(int i=0; i<n; i++) {
                int k = scan.nextInt();
                for(int j=0; j<k; j++) {
                    int am = scan.nextInt();
                    if(a.get(am) == null) {
                        a.put(am, 1);
                    } else {
                        a.put(am, a.get(am) + 1);
                    }
                }
            }

            int cnt = 0;

            for (Integer val : a.values()) {
                if(val == n) {
                    cnt ++;
                }
            }

            System.out.println(cnt);

        }
    }
}

/tmp/hf-datasets-cache/medium/datasets/42704881117311-config-parquet-and-info-qiankunmu-Project_CodeNet-896c9d36/hub/datasets--qiankunmu--Project_CodeNet_Python800_and_Java250/snapshots/c899fde44a77ba1cc14973ed3de064e4ff3aadc7/Project_CodeNet_Java250.tar.gz