<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described.
<END_TASK>
<USER_TASK:>
Description:
Make a lexicographically smallest palindrome with minimal changes
Function to create a palindrome ; Count the occurrences of every character in the string ; Create a string of characters with odd occurrences ; Change the created string upto middle element and update count to make sure that only one odd character exists . ; decrease the count of character updated ; Create three strings to make first half second half and middle one . ; characters with even occurrences ; fill the first half . ; character with odd occurrence ; fill the first half with half of occurrence except one ; For middle element ; create the second half by reversing the first half . ; Driver Code

<ASSISTANT_TASK:>
Python Code:
def palindrome(s : str , n : int ) -> int : 
	 cnt = dict() 
 R =[] 
 for i in range(n ) : 
	 a = s[i ] 
 if a in cnt : 
	 cnt[a ] += 1 
  else : 
	 cnt[a ] = 1 
   i = ' a ' 
 while i <= ' z ' : 
	 if i in cnt and cnt[i ] % 2 != 0 : 
	 R += i 
  i = chr(ord(i ) + 1 ) 
  l = len(R ) 
 j = 0 
 for i in range(l - 1 ,(l // 2 ) - 1 , - 1 ) : 
	 if R[i ] in cnt : 
	 cnt[R[i ] ] -= 1 
  else : 
	 cnt[R[i ] ] = - 1 
  R[i ] = R[j ] 
 if R[j ] in cnt : 
	 cnt[R[j ] ] += 1 
  else : 
	 cnt[R[j ] ] = 1 
  j += 1 
  first , middle , second = "", "", ""
 i = ' a ' 
 while i <= ' z ' : 
	 if i in cnt : 
	 if cnt[i ] % 2 == 0 : 
	 j = 0 
 while j < cnt[i ] // 2 : 
	 first += i 
 j += 1 
   else : 
	 j = 0 
 while j <(cnt[i ] - 1 ) // 2 : 
	 first += i 
 j += 1 
  middle += i 
   i = chr(ord(i ) + 1 ) 
  second = first 
 second = ' ' . join(reversed(second ) ) 
 resultant = first + middle + second 
 print(resultant ) 
  if __name__== "__main __": 
	 S = "geeksforgeeks "
 n = len(S ) 
 palindrome(S , n ) 
 
<END_TASK>
