Consider the the request sequence you gave
a, a, b, b, c, c, d, d ...
and a cache size of 2, when the first c arrives, the cache is in the following state (left is head and right is the tail, inserted at the head):
b(1) a(1)
and it will trigger an eviction, and requires resetting 2 (or O(m)) objects with the following state changes
b(1) a(1) -> b(1) a(0) -> b(0) a(0) -> c(0) b(0)
the next c will change the bit to 1, and we will have
c(1) b(0),
When d arrives, b will be evicted, and we have
d(0) c(1)
Note that we only check/reset one object this time instead of O(m).
Therefore, in the worst case between each O(m) eviction, you need O(m) requests to set the m objects to "visited", strictly no more than a LRU cache.