Есть n + 1 баллов, куда вы можете вставить .
.Таким образом, вы можете просто посчитать в двоичном виде, чтобы найти все варианты.
Каждый бит в вашем счетчике соответствует позиции вставки.Если бит равен 1, тогда вы вставляете .
, если он равен 0, то нет.
for(int variation=0;variation<(1<<(s.Length+1));variation++)
{
string variatedWord="";
for(int position=0;position<length(s)+1)
{
if(variation&(1<<position)!=0)
variatedWord+=".";
if(position<s.Length)
variatedWord+=s[positon];
}
yield return variatedWord;
}