Слишком абстрактная задача. Это Exact Cover problem (
https://en.wikipedia.org/wiki/Exact_cover), решается написанием кастомного алгоритма под твою задачу. Но если ты сделаешь карточки нужных размеров, можно будет воспользоваться Smart Selection (просто когда их выделяешь), чтобы распределить спейсинги в колонках и/или столбцах (однако если нет ни того, ни другого, то тем плагином, что выше выравнивать по сетке).