#include <bits/stdc++.h>
using namespace std;
int lowbit(int x) { return x & (-x); }
int c[2][100010];
void insert(int id, int x, int y) {
  for (int i = x; i < 100010; i += lowbit(i)) c[id][i] += y;
}
int query(int id, int x) {
  int ans = 0;
  for (int i = x; i > 0; i -= lowbit(i)) ans += c[id][i];
  return ans;
}
vector<int> v[1010];
int main() {
  int n, m, x;
  memset(c, 0, sizeof(c));
  scanf("%d", &n);
  int sum = 0;
  for (int i = 0; i < n; i++) {
    scanf("%d", &m);
    sum += (m - 1);
    while (m--) {
      scanf("%d", &x);
      v[i].push_back(x);
    }
    sort(v[i].begin(), v[i].end());
  }
  int ans = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < v[i].size(); j++) insert(0, v[i][j], 1);
    for (int j = 0; j < v[i].size(); j++) insert(1, v[i][j], 1);
    for (int j = 0; j < v[(i + 1) % n].size(); j++)
      insert(1, v[(i + 1) % n][j], 1);
    x = (i - 1);
    if (x < 0) x += n;
    for (int j = 0; j < v[x].size(); j++) insert(0, v[x][j], 1);
    for (int j = 1; j < v[i].size(); j++) {
      int x1 = query(0, v[i][j]);
      int x2 = query(1, v[i][j]);
      int y1 = query(0, v[i][j - 1]);
      int y2 = query(1, v[i][j - 1]);
      if (x1 - y1 == x2 - y2) ans++;
    }
    for (int j = 0; j < v[i].size(); j++) insert(0, v[i][j], -1);
    for (int j = 0; j < v[i].size(); j++) insert(1, v[i][j], -1);
    for (int j = 0; j < v[(i + 1) % n].size(); j++)
      insert(1, v[(i + 1) % n][j], -1);
    x = (i - 1);
    if (x < 0) x += n;
    for (int j = 0; j < v[x].size(); j++) insert(0, v[x][j], -1);
  }
  cout << sum - ans << endl;
  return 0;
}
