The following algorithm solves it in O(N+M) time. where

N=number of strings

M=total number of characters put together in all strings.

The steps are as follows:

```
`1. Create a hash value for each string`
`2. Xor it and find the one which didn't have a pair`
```

Xor has this useful property that if you do a xor a=0 and b xor 0=b.

Tips to generate the hash value for a string: Use a 27 base number system, and give a a value of 1, b a value of 2 and so on till z which gets 26, and so if string is "abc" , we compute hash value as: H=3*(27 power 0)+2*(27 power 1)+ 1(27 power 2) =786 You could use modulus operator to make hash values small enough to fit in 32-bit integers.If you do that keep an eye out for collisions, which are basically two strings which are different but get the same hash value due to the modulus operation. Mostly I guess you won't be needing it.

So compute the hash for each string, and then start from the first hash and keep xor-ing, the result will hold the hash value of the string which din't have a pair. *Caution*:This is useful only when strings occur in pairs.Still this is a good idea to start with, that's why I answered it.