Флекс тут не поможет.
1. Самый простой вариант это CSS columns
2. Можно использовать любой готовый скрипт из семейства masonry. Легко гуглится.
3. Либо считать высоту на JS и тогда можно и флекс.
4. Вариант из очень будущего (всё таки вопросы тут живут долго, на всякий напишу): раскладка masonry в grid.
В данном случае можно без js обойтись. Почитай про columns в css, там много интересных настроек, в том числе автоматическая ширина и переносы по количеству контента. Накидал пример: кодручка.