Задача сформулирована не корректно, т.к. недостаточно информации о формировании сообщения.
В случае если мы передаём значение 15 то сообщение будет размером 1<span>111 бит.</span>
В худшем случае минимальное сообщение будет иметь размерность 100<span>000 бит
В лучшем случае сообщение может быть представлено как поток 2битных сообщений. Максимальная длина потока будет равна 32 сообщениям. В случае оптимистичного прогноза успех может произойти на первом сообщении. Таким образом мы считаем номер в потоке и значение бита. Если значение == 1 то в этом вагоне находятся друзья.
</span>
Program n1;
var i, n : integer;
begin
for i:=1 to n do writeln (n)
end.
Тут не очень длинная строка получилась, её можно обработать и в таблице Excel.
Собственно, я составил таблицу для решения этой задачи (она прилагается к решению).
Самое большое преобразование там- это расстановка символов в обратном порядке.
Результат в таблице- после всех возможных замен символов BAB, в полученной строке осталось 24 буквы B.