#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

bool is_anagram(string a, string b)
{
    sort(a.begin(), a.end());
    sort(b.begin(), b.end());
    return a == b;
}

int main()
{
    vector< vector<string> > list;
    const int array_size = 6;
    string array[array_size] = { "seaside", "scent", "postman", "disease", "cents", "tampons" };

    // Store strings.

    bool match;

    for (int i = 0; i < array_size; ++i)
    {
        match = false;

        for (int j = 0; !match && j < list.size(); ++j)
        {
            if (is_anagram(array[i], list[j][0]))
            {
                list[j].push_back(array[i]);
                match = true;
            }
        }

        if (!match)
        {
            vector<string> t;
            list.push_back(t);
            list[list.size() - 1].push_back(array[i]);
        }
    }

    // Sort columns.

    for (int i = 0; i < list.size(); i++)
    {
        sort(list[i].begin(), list[i].end());
    }

    // Sort rows.

    sort(list.begin(), list.end(), [](vector<string> a, vector<string> b)
    {
        return a[0] < b[0];
    });

    // Display vector.

    for (int i = 0; i < list.size(); i++)
    {
        for (int j = 0; j < list[i].size(); j++)
        {
            cout << list[i][j] << ' ';
        }

        cout << endl;
    }

    return 0;
}