Note that the graph of $g(x)$ is identical to the graph of $f(x)$ shifted $a$ units to the left. (This is true because if $(x,f(x))$ is a point on the graph of $f$, then $(x-a,f(x))$ is the corresponding point on the graph of $g$.)

The graph of a function and its inverse are reflections of each other across the line $y=x$. Therefore, if $g(x)$ is its own inverse, then the graph of $g(x)$ must be symmetric with respect to the line $y=x$.

The graph of $f(x)$ is symmetric with respect to the line $y=x-2$: [asy]
draw((-1.25,-3.25)--(5.25,3.25),red+0.75+dashed);
import graph; size(8cm); real lsf=0.5; pen dps=linewidth(0.7)+fontsize(10); defaultpen(dps); pen ds=black; real xmin=-3.25,xmax=5.25,ymin=-3.25,ymax=4.25;

pen cqcqcq=rgb(0.75,0.75,0.75);

/*grid*/ pen gs=linewidth(0.7)+cqcqcq+linetype("2 2"); real gx=1,gy=1;
for(real i=ceil(xmin/gx)*gx;i<=floor(xmax/gx)*gx;i+=gx) draw((i,ymin)--(i,ymax),gs); for(real i=ceil(ymin/gy)*gy;i<=floor(ymax/gy)*gy;i+=gy) draw((xmin,i)--(xmax,i),gs);

Label laxis; laxis.p=fontsize(10);

xaxis("",xmin,xmax,Ticks(laxis,Step=1.0,Size=2,NoZero),Arrows(6),above=true); yaxis("",ymin,ymax,Ticks(laxis,Step=1.0,Size=2,NoZero),Arrows(6),above=true);
real f1(real x){return (x-4)/(x-3);}
draw(graph(f1,-3.25,2.7),linewidth(1));
draw(graph(f1,3.2,5.25),linewidth(1));
clip((xmin,ymin)--(xmin,ymax)--(xmax,ymax)--(xmax,ymin)--cycle);

label("$y=f(x)$",(5.5,0.6),E);
[/asy]

Therefore, to make this graph symmetric with respect to $y=x$, we must shift it $2$ places to the left: [asy]
draw((-3.25,-3.25)--(4.25,4.25),red+0.75+dashed);
import graph; size(8.7cm); real lsf=0.5; pen dps=linewidth(0.7)+fontsize(10); defaultpen(dps); pen ds=black; real xmin=-3.25,xmax=5.25,ymin=-3.25,ymax=4.25;

pen cqcqcq=rgb(0.75,0.75,0.75);

/*grid*/ pen gs=linewidth(0.7)+cqcqcq+linetype("2 2"); real gx=1,gy=1;
for(real i=ceil(xmin/gx)*gx;i<=floor(xmax/gx)*gx;i+=gx) draw((i,ymin)--(i,ymax),gs); for(real i=ceil(ymin/gy)*gy;i<=floor(ymax/gy)*gy;i+=gy) draw((xmin,i)--(xmax,i),gs);

Label laxis; laxis.p=fontsize(10);

xaxis("",xmin,xmax,Ticks(laxis,Step=1.0,Size=2,NoZero),Arrows(6),above=true); yaxis("",ymin,ymax,Ticks(laxis,Step=1.0,Size=2,NoZero),Arrows(6),above=true);
real f1(real x){return (x-2)/(x-1);}
draw(graph(f1,-3.25,0.7),linewidth(1));
draw(graph(f1,1.2,5.25),linewidth(1));
clip((xmin,ymin)--(xmin,ymax)--(xmax,ymax)--(xmax,ymin)--cycle);

label("$y=f(x+2)$",(5.5,0.8),E);
[/asy]

So, $a=2$.
g(x)$의 그래프는 $f(x)$의 그래프가 왼쪽으로 $a$ 단위 이동한 것과 동일하다는 점에 유의하십시오. ($(x,f(x))$가 $f$ 그래프의 한 점이라면, $(x-a,f(x))$는 $g$ 그래프의 해당 점이기 때문에 그렇습니다.)

함수의 그래프와 그 역함수는 $y=x$ 선을 가로질러 서로를 반사합니다. 따라서 $g(x)$가 그 자체의 역수라면, $g(x)$의 그래프는 $y=x$ 선에 대해 대칭이어야 합니다.

f(x)$의 그래프는 $y=x-2$ 선에 대해 대칭입니다: [asy].
draw((-1.25,-3.25)--(5.25,3.25),red+0.75+dashed);
import graph; size(8cm); real lsf=0.5; pen dps=linewidth(0.7)+fontsize(10); defaultpen(dps); pen ds=black; real xmin=-3.25,xmax=5.25,ymin=-3.25,ymax=4.25;

pen cqcqcq=rgb(0.75,0.75,0.75);

/*grid*/ pen gs=linewidth(0.7)+cqcqcq+linetype("2 2"); real gx=1,gy=1;
FOR(REAL I=CEIL(XMIN/GX)*GX;I<=FLOOR(XMAX/GX)*GX;I+=GX) DRAW((I,YMIN)--(I,YMAX),GS); FOR(REAL I=CEIL(YMIN/YG)*GY;I<=FLOOR(YMAX/YG)*GY;I+=GY) DRAW((XMIN,I)--(XMAX,I),GS);

레이블 laxis; laxis.p=fontsize(10);

x축("",xmin,xmax,Ticks(laxis,Step=1.0,Size=2,NoZero),Arrows(6),above=true); y축("",ymin,ymax,Ticks(laxis,Step=1.0,Size=2,NoZero),Arrows(6),above=true);
real f1(real x){return (x-4)/(x-3);}
draw(graph(f1,-3.25,2.7),linewidth(1));
draw(graph(f1,3.2,5.25),linewidth(1));
clip((xmin,ymin)--(xmin,ymax)--(xmax,ymax)--(xmax,ymin)--cycle);

label("$y=f(x)$",(5.5,0.6),E);
[/asy]

따라서 이 그래프를 $y=x$에 대해 대칭으로 만들려면 그래프를 왼쪽으로 2$ 위치 이동해야 합니다: [asy].
draw((-3.25,-3.25)--(4.25,4.25),red+0.75+dashed);
import graph; size(8.7cm); real lsf=0.5; pen dps=linewidth(0.7)+fontsize(10); defaultpen(dps); pen ds=black; real xmin=-3.25,xmax=5.25,ymin=-3.25,ymax=4.25;

pen cqcqcq=rgb(0.75,0.75,0.75);

/*grid*/ pen gs=linewidth(0.7)+cqcqcq+linetype("2 2"); real gx=1,gy=1;
FOR(REAL I=CEIL(XMIN/GX)*GX;I<=FLOOR(XMAX/GX)*GX;I+=GX) DRAW((I,YMIN)--(I,YMAX),GS); FOR(REAL I=CEIL(YMIN/YG)*GY;I<=FLOOR(YMAX/YG)*GY;I+=GY) DRAW((XMIN,I)--(XMAX,I),GS);

레이블 laxis; laxis.p=fontsize(10);

x축("",xmin,xmax,Ticks(laxis,Step=1.0,Size=2,NoZero),Arrows(6),above=true); y축("",ymin,ymax,Ticks(laxis,Step=1.0,Size=2,NoZero),Arrows(6),above=true);
real f1(real x){return (x-2)/(x-1);}
draw(graph(f1,-3.25,0.7),linewidth(1));
draw(graph(f1,1.2,5.25),linewidth(1));
clip((xmin,ymin)--(xmin,ymax)--(xmax,ymax)--(xmax,ymin)--cycle);

label("$y=f(x+2)$",(5.5,0.8),E);
[/asy]

따라서 $a=2$입니다.