#include <bits/stdc++.h>
#define pi acos(-1)
#define sz(x) (int) x.size()
#define pii pair<int, int>
#define pill pair<int, long long>
#define mii map<int, int>
#define vi vector<int>
#define vll vector<long long>
#define vs vector<string>
#define vb vector<bool>
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define popb pop_back
#define all(v) v.begin(),v.end()
#define mset(v, x) memset(v, x, sizeof(v))
#define mset2d(v, x, n) memset(v, x, sizeof(v[0][0]) * n * n)
#define mset2dd(v, x, n, m) memset(v, x, sizeof(v[0][0]) * n * m)
#define debug(x) cerr<<#x<<" : "<<x<<endl
#define debug2(x,y) cerr<<#x<<" : "<<x<<" & "<<#y<<" : "<<y<<endl
#define test() cerr<<"hola papa"<<endl
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
using namespace std;

int n, t, s;
ll x;

int main() {
    cin >> n;

    vector< vll > vl;
    vector< vll > vh;

    map<ll, int> m;
    map<ll, int>::iterator it;

    for (int i = 0; i < n; ++i) {
        vll v;
        cin >> t >> s;

        for (int j = 0; j < s; ++j) {
            cin >> x;
            v.pb(x);
            m[x] = 0;
        }

        t == 1 ? vl.pb(v) : vh.pb(v);
    }

    for (int i = 0; i < sz(vl); ++i) {
        for (int j = 0; j < sz(vl[i]); ++j) {
            m[vl[i][j]]++;
        }
    }

    for (int i = 0; i < sz(vh); ++i) {
        for (int j = 0; j < sz(vh[j]); ++j) {
            m[vh[i][j]] = -1;
        }
    }

    int ans = 0;

    for (it = m.begin(); it != m.end(); ++it) {
        if (it->se == sz(vl)) {
            ++ans;
        }
    }

    cout << ans << "\n";
}
