



from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_torch_available,
    is_vision_available,
)


UpperCamelCase_										=					{'''configuration_vit''': ['''VIT_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''ViTConfig''', '''ViTOnnxConfig''']}

try:
      if not is_vision_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      UpperCamelCase_										=					['''ViTFeatureExtractor''']
      UpperCamelCase_										=					['''ViTImageProcessor''']

try:
      if not is_torch_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      UpperCamelCase_										=					[
          '''VIT_PRETRAINED_MODEL_ARCHIVE_LIST''',
          '''ViTForImageClassification''',
          '''ViTForMaskedImageModeling''',
          '''ViTModel''',
          '''ViTPreTrainedModel''',
      ]

try:
      if not is_tf_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      UpperCamelCase_										=					[
          '''TFViTForImageClassification''',
          '''TFViTModel''',
          '''TFViTPreTrainedModel''',
      ]

try:
      if not is_flax_available():
            raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
      pass
else:
      UpperCamelCase_										=					[
          '''FlaxViTForImageClassification''',
          '''FlaxViTModel''',
          '''FlaxViTPreTrainedModel''',
      ]

if TYPE_CHECKING:
      from .configuration_vit import VIT_PRETRAINED_CONFIG_ARCHIVE_MAP, ViTConfig, ViTOnnxConfig

      try:
            if not is_vision_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .feature_extraction_vit import ViTFeatureExtractor
            from .image_processing_vit import ViTImageProcessor

      try:
            if not is_torch_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_vit import (
                VIT_PRETRAINED_MODEL_ARCHIVE_LIST,
                ViTForImageClassification,
                ViTForMaskedImageModeling,
                ViTModel,
                ViTPreTrainedModel,
            )

      try:
            if not is_tf_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_tf_vit import TFViTForImageClassification, TFViTModel, TFViTPreTrainedModel

      try:
            if not is_flax_available():
                  raise OptionalDependencyNotAvailable()
      except OptionalDependencyNotAvailable:
            pass
      else:
            from .modeling_flax_vit import FlaxViTForImageClassification, FlaxViTModel, FlaxViTPreTrainedModel


else:
      import sys

      UpperCamelCase_										=					_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)


import functools






def    lowerCamelCase__				(				__lowerCAmelCase  :  str    ,							__lowerCAmelCase  :  str				):




			"""simple docstring"""


			lowerCAmelCase_						=	len(__lowerCAmelCase				)
			lowerCAmelCase_						=	len(__lowerCAmelCase				)

			@functools.cache
			def min_distance(__lowerCAmelCase  :  int    ,							__lowerCAmelCase  :  int				) -> int:
						# if first word index is overflow - delete all from the second word
						if indexa >= len_worda:
									return len_worda - indexa
						# if second word index is overflow - delete all from the first word
						if indexa >= len_worda:
									return len_worda - indexa
						lowerCAmelCase_						=	int(worda[indexa] != worda[indexa]				)  # current letters not identical
						return min(
						    1 + min_distance(indexa + 1    ,							__lowerCAmelCase				)    ,							1 + min_distance(__lowerCAmelCase    ,							indexa + 1				)    ,							diff + min_distance(indexa + 1    ,							indexa + 1				)    ,							)

			return min_distance(0    ,							0				)


if __name__ == "__main__":
			import doctest

			doctest.testmod()



