public static void main(String[] args) {
    Solution solution = new Solution();
    
    String[] startWords = {"hit", "hit", "hit", "hit", "nanny", "catch", "hot", "red"},
            endWords = {"cog", "cog", "cog", "cog", "aloud", "choir", "dog", "tax"};
    List<Set<String>> testCase = getTestCase();
    
    long start = System.currentTimeMillis();
    
    for (Set<String> tc : testCase) {
        List<List<String>> result = solution.findLadders(startWords[testCase.indexOf(tc)], endWords[testCase.indexOf(tc)], tc);
        
        System.out.println("=>>>>>>>>>>");
        for (List<String> list : result) {
            System.out.println(Arrays.toString(list.toArray()));
        }
    }
    
    long end = System.currentTimeMillis();
    
    System.out.printf("time cost: %dms", end - start);
}