public void buildPath(String start, String end, Map<String, List<String>> map, List<String> single, List<List<String>> result){
        if(end.equals(start)){
            result.add(new ArrayList<String>(single));
            return;
        }

        for(String s : map.get(end)){
            single.add(0, s);
            buildPath(start, s, map, single, result);
            single.remove(0);
        }
    }