## Task
Given an array of strings, reverse them and their order in such way that their length stays the same as the length of the original inputs.

### Example:

```
Input:  {"I", "like", "big", "butts", "and", "I", "cannot", "lie!"}
Output: {"!", "eilt", "onn", "acIdn", "ast", "t", "ubgibe", "kilI"}
```

Good luck!

Difficulty: introductory

Starter code:

def reverse(a):
	

Solutions:
def reverse(a):
    s=reversed(''.join(a))
    return [''.join(next(s) for _ in w) for w in a]

def reverse(a):
    s = ''.join(a)[::-1]
    l, x = [], 0
    for i in a:
        l.append(s[x:x+len(i)])
        x += len(i)
    return l

def reverse(a):
    s=list(''.join(a))
    return [''.join(s.pop() for _ in w) for w in a]

from itertools import islice

def reverse(a):
    cs = (c for s in reversed(a) for c in reversed(s))
    return [''.join(islice(cs, 0, len(s))) for s in a]

def reverse(a):
    s = iter(''.join(a)[::-1])
    return [''.join(next(s) for _ in range(len(w))) for w in a]

def reverse(a):
    r = list("".join(a))
    return ["".join(r.pop() for c in w) for w in a]

def reverse(a):
    b = ''.join(a)[::-1]
    l = []
    for i in a:
        l.append(b[:len(i)])
        b = b[len(i):]
    return l

def reverse(a):
    letters = ''.join(a)[::-1]
    result, chunk_size = [], 0
    for word in a:
        result.append(letters[chunk_size:chunk_size + len(word)])
        chunk_size += len(word)
    return result

def reverse(a):
  reversed_str = "".join(a)[::-1]
  final_arr = []
  start = 0
  finish = len(a[0])
  for i in range(1,len(a)+1):
    final_arr.append(reversed_str[start:finish])
    start = finish
    if len(a) > i:
      finish = start + len(a[i])

  return final_arr

from itertools import islice

def reverse(a):
    it = iter(''.join(x[::-1] for x in reversed(a)))
    return [''.join(islice(it, len(x))) for x in a]