The graph of $y=f(x)$ is shown in red below. For how many values of $c$ is $f(c) = -1$?
[asy]
size(150);
real ticklen=3;
real tickspace=2;
real ticklength=0.1cm;
real axisarrowsize=0.14cm;
pen axispen=black+1.3bp;
real vectorarrowsize=0.2cm;
real tickdown=-0.5;
real tickdownlength=-0.15inch;
real tickdownbase=0.3;
real wholetickdown=tickdown;
void rr_cartesian_axes(real xleft, real xright, real ybottom, real ytop, real xstep=1, real ystep=1, bool useticks=false, bool complexplane=false, bool usegrid=true) {
import graph;
real i;
if(complexplane) {
label("$\textnormal{Re}$",(xright,0),SE);
label("$\textnormal{Im}$",(0,ytop),NW);
} else {
label("$x$",(xright+0.4,-0.5));
label("$y$",(-0.5,ytop+0.2));
}
ylimits(ybottom,ytop);
xlimits( xleft, xright);
real[] TicksArrx,TicksArry;
for(i=xleft+xstep; i if(abs(i) >0.1) {
TicksArrx.push(i);
}
}
for(i=ybottom+ystep; i if(abs(i) >0.1) {
TicksArry.push(i);
}
}
if(usegrid) {
xaxis(BottomTop(extend=false), Ticks("%", TicksArrx ,pTick=gray(0.22),extend=true),p=invisible);//,above=true);
yaxis(LeftRight(extend=false),Ticks("%", TicksArry ,pTick=gray(0.22),extend=true), p=invisible);//,Arrows);
}
if(useticks) {
xequals(0, ymin=ybottom, ymax=ytop, p=axispen, Ticks("%",TicksArry , pTick=black+0.8bp,Size=ticklength), above=true, Arrows(size=axisarrowsize));
yequals(0, xmin=xleft, xmax=xright, p=axispen, Ticks("%",TicksArrx , pTick=black+0.8bp,Size=ticklength), above=true, Arrows(size=axisarrowsize));
} else {
xequals(0, ymin=ybottom, ymax=ytop, p=axispen, above=true, Arrows(size=axisarrowsize));
yequals(0, xmin=xleft, xmax=xright, p=axispen, above=true, Arrows(size=axisarrowsize));
}
};
rr_cartesian_axes(-6,5,-5,9);
real f(real x) {return ((x+4)*(x+1)*(x-1)*(x-3))/10;}
draw(graph(f,-4.5,3.5,operator ..), red);
[/asy]
(Assume grid lines are spaced 1 unit apart.)