Я бы подумал в сторону алгоритма от обратного - сначала разместить какую-то завершённую очень простую задача, и потом её изменять серией манипуляций (вспомните пятнашки). Так у вас однозначно получится решаемая задача. Количество перестановок (и их алгоритм) определит уникальность получившегося задания.