#include <bits/stdc++.h>
using namespace std;
int par[200005];
int Find(int x) { return par[x] == x ? x : (par[x] = Find(par[x])); }
int main() {
  long long n;
  cin >> n;
  for (int i = 0; i < 26; i++) {
    par[i] = i;
  }
  string str;
  set<char> st;
  for (int i = 0; i < n; i++) {
    cin >> str;
    for (long long j = 0; j < 26; j++) {
      char g = (int)j + 'a';
      string fn;
      fn.push_back(g);
      long long v = Find(j);
      if (str.find(fn) != string::npos) {
        for (int k = 0; k < str.size(); k++) {
          long long u = Find(str[k] - 'a');
          if (u != v) {
            par[u] = v;
          }
        }
      }
    }
    for (int k = 0; k < str.size(); k++) {
      st.insert(str[k]);
    }
  }
  map<long long, long long> mp;
  for (auto p : st) {
    mp[Find(p - 'a')]++;
  }
  cout << mp.size() << endl;
  return 0;
}
