import java.util.*;

class App {

    public static void main(String[] args) {

        String a[] = {"ola","lao","aol","asd","asdf","fdsa"};       
        List<Integer> lista = new ArrayList<Integer>(Collections.nCopies(a.length, 0));

        int num=1;
        for(int i=0; i<a.length; i++){
            if(lista.get(i)==0){
                lista.set(i, num);
                for(int j=i+1; j<a.length; j++)
                    if( lista.get(j)==0 && sameChars(a[i], a[j]))
                        lista.set(j, num);
                num++;
            }
        }

        num--;
        StringBuilder sb[] = new StringBuilder[num];
        for(int i=0; i<num; i++)
            sb[i] = new StringBuilder();


        for(int i=0; i<lista.size(); i++){
            sb[lista.get(i)-1].append(a[i]);
            sb[lista.get(i)-1].append(" ");
        }

        String[] str = new String[sb.length];
        int i=0;
        for(StringBuilder s : sb)
            str[i++] = s.deleteCharAt(s.length()-1).toString();

        imprime(str);
    }


    static boolean sameChars( String firstStr , String secondStr ) {
        char[ ] first  = firstStr.toCharArray( );
        char[ ] second = secondStr.toCharArray( );
        Arrays.sort( first );
        Arrays.sort( second );
        return Arrays.equals( first , second );
    }

    static void imprime(String[] sb) {
        int num = sb.length;
        System.out.print("{");
        for(int i=0; i < num; i++){
            System.out.print("\""+sb[i]+"\"");
            if(i!=num-1)
                System.out.print(", ");
        }
        System.out.print("}");
    }
}