// Standardteegi maksimaalse ärakasutamisega lahendus

#include <iostream>
#include <string>
#include <map>
#include <set>
using namespace std;

using key = multiset<char>;
using value = multiset<string>;

int main() {
	int n; cin >> n;

	map<key, value> grupid;
	for (int i = 0; i < n; ++i) {
		string s; cin >> s;
		// teeme s tähtedest multihulga
		key t(begin(s), end(s));
		// lisame s tema tähtedele vastavasse gruppi
		grupid[t].insert(s);
	}

	cout << grupid.size() << "\n";
	for (const auto & [_, grupp] : grupid) {
		cout << grupp.size() << "\n";
		for (const auto & s : grupp) {
			cout << s << "\n";
		}
	}
}
