Checks that some text is superpalindrome. Checking performs case-insensitive
		
		:param str sometext:
		    It is some string that will be checked for superpalindrome as text.
			
		    What is the text see at help(palindromus.istext)
			
		    The text can be multiline.
			
		:keyword dict interchange:
		    It is dictionary of interchangeable letters
			
		:except TypeError:
		    If the checked text is not a string
			
		:return bool:

def checksuper(sometext, interchange = ALL):
	"""
		Checks that some text is superpalindrome. Checking performs case-insensitive
		
		:param str sometext:
		    It is some string that will be checked for superpalindrome as text.
			
		    What is the text see at help(palindromus.istext)
			
		    The text can be multiline.
			
		:keyword dict interchange:
		    It is dictionary of interchangeable letters
			
		:except TypeError:
		    If the checked text is not a string
			
		:return bool:
	"""
	def text_by_columns(text, columns):
		column_idx = 0
		result_text = ""
		while column_idx+1 <= columns:
			for idx in range(columns):
				result_text += text[idx*columns + column_idx]
			column_idx += 1
		return result_text
	
	# check invalid data types
	OnlyStringsCanBeChecked(sometext)
	
	if istext(sometext):
		# get only alphabetic
		matches = re.findall(r'\w+', sometext)
		
		if len(matches):
			alphabetic = (''.join(matches)).replace('_', '')
			
			# get matrix size
			n = math.sqrt(len(alphabetic))
			if math.ceil(n) == int(n):
				n = int(n) # float to integer
				if checkstring(alphabetic, interchange = interchange):
					# read by columns
					alphabetic_by_col = text_by_columns(alphabetic, n)
					if checkstring(alphabetic_by_col, interchange = interchange):
						return True
	# in other cases
	return False