def algo(pocetak, kraj):
    ad = Data_Manager()
    z = ad.dajMiGradove()
    D = {}
    P = {}
    lock = {}
    open = {}
    for gradovi in z:
        D[gradovi] = float('inf')
        P[gradovi] = ""
        
    D[pocetak] = 0
    r = z
    
    while len(r) > 0:
        Q = None
        GRAD = ''
        for SVEU in r:
            if Q == None:
                l = D[SVEU]
                Q = l
                GRAD = SVEU
            elif D[SVEU] < Q:
                p = D[SVEU]
                Q = p
                GRAD = SVEU
        r.remove(GRAD)
        removITALL = GRAD
        W = ad.dajMiSpoj(removITALL)

        for allIN in W:
            
            if allIN[1] == GRAD:
                intthFirstSpot = allIN[2]
                inttheLastSpot = allIN[0]
                xy = GRAD
                all = D[xy] + inttheLastSpot
                if D[intthFirstSpot] == float('inf'):
                    D[intthFirstSpot] = all
                    P[intthFirstSpot] = xy
                elif D[intthFirstSpot] > all:
                    D[intthFirstSpot] = all
                    P[intthFirstSpot] = xy
                    
    to = []
    m = kraj
    while m != pocetak:
        if to.count(m) == 0:
            veliko = m 
            to.insert(0, veliko)
            node = P[veliko]
        else:
            break
        veratiTOALL = pocetak
        
    to.insert(0, pocetak)
    return (D[kraj], to)