#include <bits/stdc++.h>
using namespace std;
int p[2 * 100005];
int find(int x) {
  if (p[x] != x) return p[x] = find(p[x]);
  return p[x];
}
void un(int x, int y) {
  int a = find(x);
  int b = find(y);
  p[a] = b;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n;
  cin >> n;
  bool mat[n][26];
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < 26; j++) {
      mat[i][j] = false;
    }
  }
  for (int i = 0; i < n; i++) p[i] = i;
  for (int i = 0; i < n; i++) {
    string s;
    cin >> s;
    for (int j = 0; j < s.length(); j++) {
      mat[i][s[j] - 'a'] = true;
    }
  }
  vector<vector<int> > v(26);
  for (int i = 0; i < 26; i++) {
    for (int j = 0; j < n; j++) {
      if (mat[j][i]) {
        v[i].push_back(j);
      }
    }
  }
  for (int i = 0; i < 26; i++) {
    for (int j = 1; j < v[i].size(); j++) {
      un(v[i][j - 1], v[i][j]);
    }
  }
  set<int> s;
  for (int i = 0; i < n; i++) {
    s.insert(find(i));
  }
  cout << s.size() << endl;
  return 0;
}
