#include <iostream>
using namespace std;
#include <vector>
#include <string>
#include <algorithm>

bool isBrother(string a, string b) {
    if (a.size() != b.size()) {
        return false;
    }
    if (a == b) {
        return false;
    }

    sort(a.begin(), a.end());
    sort(b.begin(), b.end());
    if (a == b) {
        return true;
    }
    return false;
}

int main() {
    string str;
    int dicNum;
    int k;
    vector<string> dic;
    string letter;
    vector<string> dicB;
    cin >> dicNum;

    for (int i = 0; i < dicNum; i++) {
        cin >> str;
        dic.push_back(str);
    }
    cin >> letter;
    cin >> k;

    for (auto& it : dic) {
        if (isBrother(it, letter)) {
            dicB.push_back(it);
        }
    }
    sort(dicB.begin(), dicB.end());

    cout << dicB.size() << endl;
    if (k - 1 < dicB.size()) {
        cout << dicB[k - 1] << endl;
    }
}

注意一下输入的读取,输出的内容以及是否输出。

这题主要是巧用sort,既可以用来辅助判断是否为兄弟词,又可以用来给找出来的兄弟词按词典排序。

这个按词典排序也是个坑,我开始以为它的输入就叫词典排序的输入,但是其实是应该自己检查完后再排序