#include <bits/stdc++.h>
using namespace std;
long long int max(long long int a, long long int b) {
  if (a > b)
    return a;
  else
    return b;
}
long long int min(long long int a, long long int b) {
  if (a < b)
    return a;
  else
    return b;
}
const int dx[4] = {-1, 1, 0, 0};
const int dy[4] = {0, 0, -1, 1};
int XX[] = {-1, -1, -1, 0, 0, 1, 1, 1};
int YY[] = {-1, 0, 1, -1, 1, -1, 0, 1};
int main() {
  ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
  long long int i, j, k, x, y, t, e, n, d, m, z;
  cin >> n;
  vector<vector<long long int> > vec;
  for (i = 0; i < n; i++) {
    cin >> k;
    vector<long long int> vec2;
    while (k--) {
      cin >> x;
      vec2.push_back(x);
    }
    sort(vec2.begin(), vec2.end());
    vec.push_back(vec2);
  }
  long long int ans = 0;
  for (i = 0; i < n; i++) {
    vector<long long int> vec1, vec2, vec3;
    if (i == 0)
      vec1 = vec[n - 1];
    else
      vec1 = vec[i - 1];
    vec2 = vec[i];
    if (i == n - 1)
      vec3 = vec[0];
    else
      vec3 = vec[i + 1];
    long long int z = vec2.size();
    for (j = 0; j < z - 1; j++) {
      long long int val1 = vec2[j], val2 = vec2[j + 1];
      long long int sum1, sum2, ind1, ind2;
      ind1 = upper_bound(vec1.begin(), vec1.end(), val1) - vec1.begin();
      ind2 = upper_bound(vec1.begin(), vec1.end(), val2) - vec1.begin();
      sum1 = ind2 - ind1;
      ind1 = upper_bound(vec3.begin(), vec3.end(), val1) - vec3.begin();
      ind2 = upper_bound(vec3.begin(), vec3.end(), val2) - vec3.begin();
      sum2 = ind2 - ind1;
      if (sum1 != sum2) ans++;
    }
  }
  cout << ans;
}
