fork download
  1. import math
  2. def find(u, par):
  3.  
  4. if par[u] != u:
  5. par[u] = find(par[u], par)
  6. return par[u]
  7.  
  8. def union(u, v, par, size):
  9. u_root = find(u, par)
  10. v_root = find(v, par)
  11.  
  12. if u_root == v_root:
  13. return
  14.  
  15.  
  16. if size[u_root] < size[v_root]:
  17. par[u_root] = v_root
  18. size[v_root] += size[u_root]
  19. else:
  20. par[v_root] = u_root
  21. size[u_root] += size[v_root]
  22.  
  23. def ip():
  24. return map(int,input().split())
  25.  
  26.  
  27. # T=int(input())
  28.  
  29. T=1
  30. for __ in range(T):
  31. n=int(input())
  32. size=[1 for _ in range(26)]
  33. par=[i for i in range(26)]
  34. ct=[0 for _ in range(26)]
  35. for _ in range(n):
  36. s=str(input())
  37. for j in range(1,len(s)):
  38. union(ord(s[j])-ord('a'),ord(s[j-1])-ord('a'),par,size)
  39.  
  40. for j in s:
  41. ct[ord(j)-ord('a')]+=1
  42.  
  43.  
  44. st=set()
  45. for i in range(26):
  46. if ct[i]>0:
  47. p=find(i,par)
  48. if p not in st:
  49. st.add(p)
  50.  
  51. print(len(st))
  52.  
  53.  
Success #stdin #stdout 0.13s 14212KB
stdin
3
ab
bc
abc
stdout
1