If I create a subprogram of type function that for instance orders you to type a string of a particular length and you type `Overflow`, it's supposed to type the last half of the string, so in this case it would be `flow`. But on the other end if I type an odd number of characters like `Stack` it's supposed to type the last half of the string + the middle letter, so in this case it would be "ack".

Let me make it clearer (text in bold is user input):

Type a string that's not longer than 7 characters: `Candy`

The other half of the string is: `ndy`

```
     with Ada.Text_IO;         use Ada.Text_IO;
        with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

         function Split_String (S : in String) return String is 

   begin

      Mid := 1 + (S'Length / 2);

      return S(Mid .. S'Last);

   end Split_String;

           S : String(1 .. 7);
           I : Integer;

        begin

   Put("Type a string that's no longer than 7 characters: ");
   Get_Line(S, I);
   Put(Split_String(S));

        end Split;

```

Let me tell you how I've been thinking. So I do a `Get_Line` to see how many characters the string contains. I then put `I` in my subprogram to determine if its evenly dividable by two or not. If it's dividable by two, the rest should be 0, thus it'll mean that typing out the other half of the string **+ THE MIDDLE CHARACTER** is not needed. If in all the other cases, it's not dividable by two I have to type out the other half of the string + the middle character. But now I stumbled upon a big problem in my main program. I don't know how type out the other half of a string. If a string contains 4 words I can just type out `Put(S(3 .. 4);` but the thing is that I don't know a general formula for this. Help is appreciated! :) Have a good day!