import itertools
import pandas as pd
costs = {
'D1': {'P1':45,'P2':50,'P3':55,'P4':60,'P5':65},
'D2': {'P1':52,'P2':48,'P3':47,'P4':55,'P5':58},
'D3': {'P1':50,'P2':46,'P3':54,'P4':57,'P5':56},
'D4': {'P1':47,'P2':53,'P3':51,'P4':49,'P5':59},
'D5': {'P1':55,'P2':52,'P3':50,'P4':48,'P5':46}
}
divs=list(costs.keys())
projs=list(costs['D1'].keys())
best=None
best_cost=1e9
for perm in itertools.permutations(projs):
total=sum(costs[divs[i]][perm[i]] for i in range(5))
if total<best_cost:
best_cost=total
best=dict(zip(divs,perm))
best, best_cost
aW1wb3J0IGl0ZXJ0b29scwppbXBvcnQgcGFuZGFzIGFzIHBkCgpjb3N0cyA9IHsKICAgICdEMSc6IHsnUDEnOjQ1LCdQMic6NTAsJ1AzJzo1NSwnUDQnOjYwLCdQNSc6NjV9LAogICAgJ0QyJzogeydQMSc6NTIsJ1AyJzo0OCwnUDMnOjQ3LCdQNCc6NTUsJ1A1Jzo1OH0sCiAgICAnRDMnOiB7J1AxJzo1MCwnUDInOjQ2LCdQMyc6NTQsJ1A0Jzo1NywnUDUnOjU2fSwKICAgICdENCc6IHsnUDEnOjQ3LCdQMic6NTMsJ1AzJzo1MSwnUDQnOjQ5LCdQNSc6NTl9LAogICAgJ0Q1JzogeydQMSc6NTUsJ1AyJzo1MiwnUDMnOjUwLCdQNCc6NDgsJ1A1Jzo0Nn0KfQoKZGl2cz1saXN0KGNvc3RzLmtleXMoKSkKcHJvanM9bGlzdChjb3N0c1snRDEnXS5rZXlzKCkpCgpiZXN0PU5vbmUKYmVzdF9jb3N0PTFlOQoKZm9yIHBlcm0gaW4gaXRlcnRvb2xzLnBlcm11dGF0aW9ucyhwcm9qcyk6CiAgICB0b3RhbD1zdW0oY29zdHNbZGl2c1tpXV1bcGVybVtpXV0gZm9yIGkgaW4gcmFuZ2UoNSkpCiAgICBpZiB0b3RhbDxiZXN0X2Nvc3Q6CiAgICAgICAgYmVzdF9jb3N0PXRvdGFsCiAgICAgICAgYmVzdD1kaWN0KHppcChkaXZzLHBlcm0pKQoKYmVzdCwgYmVzdF9jb3N0Cg==