docs: def checkstring(somestr, interchange = ALL):
  	"""
  		Checks that some string is palindrome. Checking performs case-insensitive
  		
  		:param str somestr:
  		    It is some string that will be checked for palindrome as string.
  			
  		    The string is any string that you want. The string also can be multiline.
  			
  		    If the checked string does not contains any alphabetic characters or numbers or 
  		    it is empty then it will never be palindrome
  			
  		:keyword dict interchange:
  		    It is dictionary of interchangeable letters
  			
  		:except TypeError:
  		    If the checked string is not a string
  
  		:return bool:
  	"""
  	# check invalid data types
  	OnlyStringsCanBeChecked(somestr)
  	
  	if somestr != "":
  		# remove all special symbols
  		pattern = r'[^\w]+|[_]+'
  		purestr = re.sub(pattern, '', somestr.casefold().strip(), flags = re.IGNORECASE | re.MULTILINE)
  		
  		for k,v in interchange.items():
  			ic_pattern = '|'.join(v)
  			purestr = re.sub(ic_pattern, k, purestr, flags = re.IGNORECASE | re.MULTILINE)
  		
  		# reverse pure string
  		reversstr = purestr[-1::-1]
  		
  		# if purestr == "" that means that specified string contains 
  		# only special symbols. This string is not palindrome
  		if purestr != "" and reversstr == purestr:
  			return True
  	# in other cases
  	return False