using System;
using System.Collections.Generic;
public class Program
{
private static void generate_all_possible_binary_strings(string str) {
var q = new List<string>();
q.Add(str);
while (q.Count > 0) {
string temp = q[0];
int index = temp.IndexOf('?');
if (index != -1) {
temp = temp.Substring(0,index) + '0' + temp.Substring(index + 1);
q.Add(temp);
temp = temp.Substring(0,index) + '1' + temp.Substring(index + 1);
q.Add(temp);
}
else {
Console.WriteLine(temp);
}
q.RemoveAt(0);
}
}
public static void Main(string[] args)
{
string str = "1?0?1";
generate_all_possible_binary_strings(str);
}
}
/*
run:
10001
10011
11001
11011
*/