Dictionary order Larger

Only one test case is correct.can you please tell me the fault??

import java.util.ArrayList;
import java.util.Scanner;

public class dictionaryorderlarger {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner scn=new Scanner(System.in);
	 String str=scn.next();
	 ArrayList<String> result=DictionaryLarge(str);
	 for(int i=0;i<result.size();i++)
	 {
		 if(result.get(i).compareToIgnoreCase(str)>0)
		 {
			 System.out.println(result.get(i));
		 }
	 }

}

public static ArrayList<String> DictionaryLarge(String str)
{
	
	if(str.length()==0)
	{
		ArrayList<String> br= new ArrayList<String>();
		br.add("");
		return br;
	}
	
	
	
	
	char ch=str.charAt(0);
	String ros=str.substring(1);
	ArrayList<String> mr=new ArrayList<>();
	ArrayList<String> rr=DictionaryLarge(ros);
	for(String rrs:rr)
	{
		for(int i=0;i<=rrs.length();i++)
		{
			String val=rrs.substring(0,i)+ ch +rrs.substring(i);
			mr.add(val);
		}
	}
	
	return mr;
	
}

}

Print the answer in ascending order . For eg :- If your string is 231 then your arrayList is [213, 231, 123, 132, 321, 312] so according to your ans the answer is 321 and 312 but you should print ans in increasing order that is 312 and 321.