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 прохода это смерть.