human
Find the longest string that can be made up of other strings from the array | Function that returns true if string s can be made up of by other two string from the array after concatenating one after another.
If current string has been processed before.
If current string is found in the map and it is not the string under consideration.
Split the string into two contiguous sub - strings.
If left sub - string is found in the map and the right sub - string can be made from the strings from the given array.
If everything failed , we return false.
Function to return the longest string that can made be made up from the other string of the given array.
Put all the strings in the map.
Sort the string in decreasing order of their lengths.
Starting from the longest string.
If current string can be made up from other strings.
Driver code"
Solution in Python:

=====
Write me a code to find the longest string that can be made up of other strings from the array and the other steps required?
assistant
#Here is code to find the longest string that can be made up of other strings from the array and the other steps required.
 def canbuildword ( s , isoriginalword , mp ) :
	if s in mp and mp [ s ] == 0 :
		return False
	if s in mp and mp [ s ] == 1 and isoriginalword == 0 :
		return True
	for i in range ( 1 , len ( s ) ) :
		left = s [ : i ]
		right = s [ i : ]
		if left in mp and mp [ left ] == 1 and canbuildword ( right , 0 , mp ) :
			return True
	mp [ s ] = 0
	return False
def printlongestword ( listofwords ) :
	mp = dict ( )
	for i in listofwords :
		mp [ i ] = 1
	listofwords . sort ( key = lambda x : len ( x ) , reverse = True )
	for i in listofwords :
		if canbuildword ( i , 1 , mp ) :
			return i
	return " - 1"
if __name__ == " _ _ main _ _ " :
	listofwords = [ " geeks " , " for " , " geeksfor " , " geeksforgeeks " ]
	print ( printlongestword ( listofwords ) )