Every rank>0 processes it's part of str2

rank=1 processes _last_ part of str2
rank=2 processes part before _last_ part of str2 and so on
every rank>0 finds out how many times every letter from alphabet
appears in _process's_ part of str2
Then they send this data to rank=0
rank=0 finds decreasing sequences for every letter from alphabet

After this it must find longest increasing subsequence