private static void dfs(String s, int index, StringBuilder single, List<String> result){
        if(index == s.length()){
            result.add(single.toString());
            return;
        }

        if(s.charAt(index) == '?'){
            single.append('0');
            dfs(s, index + 1, single, result);
            single.deleteCharAt(single.length() - 1);

            single.append('1');
            dfs(s, index + 1, single, result);
            single.deleteCharAt(single.length() - 1);

        }else{
            single.append(s.charAt(index));
            dfs(s, index + 1, single, result);
            single.deleteCharAt(single.length() - 1);
        }
    }