思路大概是:
    兄弟单词不能等于原单词,兄弟单词中每个字母个数要与原单词相同,即a的个数比较,b的个数比较,c的个数比较...
由题意,兄弟单词满足的条件:
1.    与原单词不能一模一样
2.    单词长度需与原单词相等(字母总个数相同)
3.    所含每个字母个数相等
根据上述条件得到: 将原单词按字典排序(即aaabbbccc),只需要遍历每个单词s[i],将s[i]按字典排序,得到s2(如aaabcccdd),比较s1、s2是否相等即可。

import java.util.*;
public class Main{
    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();   //单词个数 num
        String[] s = new String[num];   //保存输入的单词 s[num]
        for(int i=0;i<num;i++){
            s[i] = sc.next();
        }
        String str = sc.next();     //需要查找的单词 str
        int k = sc.nextInt();     //要输出第k个兄弟单词 k
        int count =0;                //兄弟单词个数计数 count

        char[] chars1 = str.toCharArray();   
        Arrays.sort(chars1);                   //原单词转字符数组、快排 chars1
        String s1 = String.valueOf(chars1);    //排序后转字符串,用于比较 s1

        ArrayList<String> strings = new ArrayList<>();    //用来保存兄弟词

        //比较过程,只需要遍历s 找长度与str相等的单词s[i] 注:s[i]不能与str相等
        for(int i=0;i<num;i++){
            if (s[i].equals(str)||s[i].length()!=str.length()){
                continue;
            }
            
            
            char[] chars2 = s[i].toCharArray();

            Arrays.sort(chars2);                //str2转数组排序为 chars2

            String s2 = String.valueOf(chars2);  //chars2转字符串为 s2

            if (s1.equals(s2)){    //此时只需要比较s1、s2是否相等
                count++;
                strings.add(s[i]);    //计数并加入到ArrayList中得 strings
            }
        }

        //调用集合对strings 中所有字符串按字典排序并输出
        Collections.sort(strings); 
        System.out.println(count);
        for (int i=0;i<strings.size();i++){
            if (i+1==k){
                System.out.println(strings.get(i));
                break;
            }
        }

    }
}