





from __future__ import annotations

A__:  Any       					=					'''Alexander Joslin'''



def 							lowerCAmelCase_				(    A_):

    if number <= 0:
        UpperCamelCase__:					Union[str, Any]												=      F"n must be greater than 0. Got n = {number}"
        raise ValueError(A_)

    UpperCamelCase__:					Optional[Any]												=      [number + 1] * (number + 1)

    # starting position
    UpperCamelCase__:					int												=      0
    for i in range(1  ,A_):
        UpperCamelCase__:					Dict												=      min(table[i + 1]  ,table[i] + 1)
        # check if out of bounds
        if i * 2 <= number:
            UpperCamelCase__:					Optional[int]												=      min(table[i * 2]  ,table[i] + 1)
        # check if out of bounds
        if i * 3 <= number:
            UpperCamelCase__:					Dict												=      min(table[i * 3]  ,table[i] + 1)
    return table[number]


if __name__ == "__main__":
   import doctest

   doctest.testmod()








from .chunk_utils import chunk_layer
from .data_transforms import make_atomaa_masks
from .feats import atomaa_to_atomaa, frames_and_literature_positions_to_atomaa_pos, torsion_angles_to_frames
from .loss import compute_predicted_aligned_error, compute_tm
from .protein import Protein as OFProtein
from .protein import to_pdb
from .rigid_utils import Rigid, Rotation
from .tensor_utils import dict_multimap, flatten_final_dims, permute_final_dims

