C++: 7112 6694 6483 6479 6412 6339 collisions, 90 bytes
I implemented a naïve genetic algorithm for my coefficient array. I'll update this code as it finds better ones. :)
int h(const char*s){uint32_t t=0,p=0;while(*s)t="cJ~Z]q"[p++%6]*t+*s++;return t%16777213;}
Test function:
int main(void)
{
std::map<int, int> shared;
std::string s;
while (std::cin >> s) {
shared[h(s.c_str())]++;
}
int count = 0;
for (auto c : shared) {
if ((c.first & 0xFFFFFF) != c.first) { std::cerr << "invalid hash: " << c.first << std::endl; }
if (c.second > 1) { count += c.second; }
}
std::cout << count << std::endl;
return 0;
}