


def __UpperCAmelCase       (		__A ,						__A ,						__A ,						__A			)						->					int:



       '''simple docstring'''





       UpperCAmelCase__						,			UpperCAmelCase__										=     len(__A			), len(grid[0]			)
       if (
           min(__A ,						__A			) < 0
           or row == row_length
           or col == col_length
           or (row, col) in visit
           or grid[row][col] == 1
       ):
              return 0
       if row == row_length - 1 and col == col_length - 1:
              return 1

       visit.add((row, col)			)

       UpperCAmelCase__										=     0
       count += depth_first_search(__A ,						row + 1 ,						__A ,						__A			)
       count += depth_first_search(__A ,						row - 1 ,						__A ,						__A			)
       count += depth_first_search(__A ,						__A ,						col + 1 ,						__A			)
       count += depth_first_search(__A ,						__A ,						col - 1 ,						__A			)

       visit.remove((row, col)			)
       return count


if __name__ == "__main__":
    import doctest

    doctest.testmod()









from typing import TYPE_CHECKING

from ....utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


A      = {"configuration_mmbt": ["MMBTConfig"]}

try:
    if not is_torch_available():
        raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
    pass
else:
    A      = ["MMBTForClassification", "MMBTModel", "ModalEmbeddings"]


if TYPE_CHECKING:
    from .configuration_mmbt import MMBTConfig

    try:
        if not is_torch_available():
            raise OptionalDependencyNotAvailable()
    except OptionalDependencyNotAvailable:
        pass
    else:
        from .modeling_mmbt import MMBTForClassification, MMBTModel, ModalEmbeddings

else:
    import sys

    A      = _LazyModule(__name__, globals()["__file__"], _import_structure, module_spec=__spec__)





