#include <iostream>
#include <vector>
#include <algorithm>
#define rep(i, n) for(int i=0; i<n; i++)
using namespace std;
int N;
vector<string> s;
int main() {
cin >> N;
rep(i, N){
string temp;
cin >> temp;
s.emplace_back(temp);
}
auto cmp_uniq = [=](string a, string b){
auto equalsBeginBack = [=](string a, string b){
return *a.begin() == *b.begin() && *&a.back() == *&b.back();
};
auto sameKind = [=](string a, string b){
auto strkind = [=](string s){
sort(s.begin(), s.end());
auto end_pt = unique(s.begin(), s.end());
s.erase(s.end(), end_pt);
return s;
};
return strkind(a) == strkind(b);
};
return equalsBeginBack(a, b) && sameKind(a, b);
};
sort(s.begin(), s.end());
auto end_pt = unique(s.begin(), s.end(), cmp_uniq);
cout << distance(s.begin(), end_pt) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKI2RlZmluZSByZXAoaSwgbikgZm9yKGludCBpPTA7IGk8bjsgaSsrKQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBOOwp2ZWN0b3I8c3RyaW5nPiBzOwoKaW50IG1haW4oKSB7CgljaW4gPj4gTjsKCQoJcmVwKGksIE4pewoJCXN0cmluZyB0ZW1wOwoJCWNpbiA+PiB0ZW1wOwoJCXMuZW1wbGFjZV9iYWNrKHRlbXApOwoJfQoJCglhdXRvIGNtcF91bmlxID0gWz1dKHN0cmluZyBhLCBzdHJpbmcgYil7CgkJYXV0byBlcXVhbHNCZWdpbkJhY2sgPSBbPV0oc3RyaW5nIGEsIHN0cmluZyBiKXsKCQkJcmV0dXJuICphLmJlZ2luKCkgPT0gKmIuYmVnaW4oKSAmJiAqJmEuYmFjaygpID09IComYi5iYWNrKCk7CgkJfTsKCQkKCQlhdXRvIHNhbWVLaW5kID0gWz1dKHN0cmluZyBhLCBzdHJpbmcgYil7CgkJCWF1dG8gc3Rya2luZCA9IFs9XShzdHJpbmcgcyl7CgkJCQlzb3J0KHMuYmVnaW4oKSwgcy5lbmQoKSk7CgkJCQlhdXRvIGVuZF9wdCA9IHVuaXF1ZShzLmJlZ2luKCksIHMuZW5kKCkpOwoJCQkJcy5lcmFzZShzLmVuZCgpLCBlbmRfcHQpOwoJCQkJcmV0dXJuIHM7CgkJCX07CgkJCQoJCQlyZXR1cm4gc3Rya2luZChhKSA9PSBzdHJraW5kKGIpOwoJCX07CgkJCgkJcmV0dXJuIGVxdWFsc0JlZ2luQmFjayhhLCBiKSAmJiBzYW1lS2luZChhLCBiKTsKCX07CgkKCXNvcnQocy5iZWdpbigpLCBzLmVuZCgpKTsKCWF1dG8gZW5kX3B0ID0gdW5pcXVlKHMuYmVnaW4oKSwgcy5lbmQoKSwgY21wX3VuaXEpOwoJY291dCA8PCBkaXN0YW5jZShzLmJlZ2luKCksIGVuZF9wdCkgPDwgZW5kbDsKCQoJcmV0dXJuIDA7Cn0=