fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. #define rep(i, n) for(int i=0; i<n; i++)
  6.  
  7. using namespace std;
  8.  
  9. int N;
  10. vector<string> s;
  11.  
  12. int main() {
  13. cin >> N;
  14.  
  15. rep(i, N){
  16. string temp;
  17. cin >> temp;
  18. s.emplace_back(temp);
  19. }
  20.  
  21. auto cmp_uniq = [=](string a, string b){
  22. auto equalsBeginBack = [=](string a, string b){
  23. return *a.begin() == *b.begin() && *&a.back() == *&b.back();
  24. };
  25.  
  26. auto sameKind = [=](string a, string b){
  27. auto strkind = [=](string s){
  28. sort(s.begin(), s.end());
  29. auto end_pt = unique(s.begin(), s.end());
  30. s.erase(s.end(), end_pt);
  31. return s;
  32. };
  33.  
  34. return strkind(a) == strkind(b);
  35. };
  36.  
  37. return equalsBeginBack(a, b) && sameKind(a, b);
  38. };
  39.  
  40. sort(s.begin(), s.end());
  41. auto end_pt = unique(s.begin(), s.end(), cmp_uniq);
  42. cout << distance(s.begin(), end_pt) << endl;
  43.  
  44. return 0;
  45. }
Success #stdin #stdout 0s 4236KB
stdin
6
programming
odai
prorgamnimg
oadi
pgorgamming
idao
stdout
4