



def snake_case__  (			__SCREAMING_SNAKE_CASE			,     __SCREAMING_SNAKE_CASE			,     __SCREAMING_SNAKE_CASE			,     __SCREAMING_SNAKE_CASE )		->							int:
		UpperCAmelCase_					,						UpperCAmelCase_						=				len(__SCREAMING_SNAKE_CASE ), len(grid[0] )
		if (
		    min(__SCREAMING_SNAKE_CASE			,     __SCREAMING_SNAKE_CASE ) < 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(__SCREAMING_SNAKE_CASE			,     row + 1			,     __SCREAMING_SNAKE_CASE			,     __SCREAMING_SNAKE_CASE )
		count += depth_first_search(__SCREAMING_SNAKE_CASE			,     row - 1			,     __SCREAMING_SNAKE_CASE			,     __SCREAMING_SNAKE_CASE )
		count += depth_first_search(__SCREAMING_SNAKE_CASE			,     __SCREAMING_SNAKE_CASE			,     col + 1			,     __SCREAMING_SNAKE_CASE )
		count += depth_first_search(__SCREAMING_SNAKE_CASE			,     __SCREAMING_SNAKE_CASE			,     col - 1			,     __SCREAMING_SNAKE_CASE )

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


if __name__ == "__main__":
			import doctest

			doctest.testmod()






from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_sentencepiece_available,
    is_tokenizers_available,
    is_torch_available,
)


SCREAMING_SNAKE_CASE     				=						{"configuration_fnet": ["FNET_PRETRAINED_CONFIG_ARCHIVE_MAP", "FNetConfig"]}

try:
			if not is_sentencepiece_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			SCREAMING_SNAKE_CASE     				=						["FNetTokenizer"]

try:
			if not is_tokenizers_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			SCREAMING_SNAKE_CASE     				=						["FNetTokenizerFast"]

try:
			if not is_torch_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			SCREAMING_SNAKE_CASE     				=						[
			    "FNET_PRETRAINED_MODEL_ARCHIVE_LIST",
			    "FNetForMaskedLM",
			    "FNetForMultipleChoice",
			    "FNetForNextSentencePrediction",
			    "FNetForPreTraining",
			    "FNetForQuestionAnswering",
			    "FNetForSequenceClassification",
			    "FNetForTokenClassification",
			    "FNetLayer",
			    "FNetModel",
			    "FNetPreTrainedModel",
			]


if TYPE_CHECKING:
			from .configuration_fnet import FNET_PRETRAINED_CONFIG_ARCHIVE_MAP, FNetConfig

			try:
						if not is_sentencepiece_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .tokenization_fnet import FNetTokenizer

			try:
						if not is_tokenizers_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .tokenization_fnet_fast import FNetTokenizerFast

			try:
						if not is_torch_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .modeling_fnet import (
						    FNET_PRETRAINED_MODEL_ARCHIVE_LIST,
						    FNetForMaskedLM,
						    FNetForMultipleChoice,
						    FNetForNextSentencePrediction,
						    FNetForPreTraining,
						    FNetForQuestionAnswering,
						    FNetForSequenceClassification,
						    FNetForTokenClassification,
						    FNetLayer,
						    FNetModel,
						    FNetPreTrainedModel,
						)


else:
			import sys

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

