il metodo non funziona perchè per i primi 3 cicli del secondo for la lettera minima è sempre "a". Il tuo metodo funzionerebbe le caso scambiasse le posizioni dei caratteri nella stringa di partenza.

potevi notare il tutto facendoti un output del metodo:

esempio del ciao:

primo ciclo del for esterno:
carattere estratto "c";
ciclo interno:
carattere minimo rispetto a "c" è il carattere "a" ( sulla sotto-stringa "ciao");;

result = "a".

secondo ciclo del for esterno:
carattere estratto "i";
ciclo interno:
carattere minimo rispetto a "i" è il carattere "a" ( sulla sotto-stringa "iao");

result = "aa".

terzo ciclo del for esterno:
carattere estratto "a";
ciclo interno:
carattere minimo rispetto a "a" è il carattere "a" (sulla sotto-stringa "ao");

result = "aaa".

quarto ciclo del for esterno:
carattere estratto "o";
ciclo interno:
carattere minimo rispetto a "o" è il carattere "o" (sulla sotto-stringa "o");

result = "aaao".