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);
    }