print(list(itertools.product(*zip(atoms, dopedatoms))))
не зная самый минимальный Вы не можете найти второй после минимального.
if (a[i] < min1) {
min2 = min1;
min1 = a[i];
} else if (a[i] < min2) {
min2 = a[i];
}
понятно что в 2 прохода это смерть.