- const maxn = 250; 
-       oo = 60000; 
-       maxq = 1000000; 
- type tqueue = record 
-                 front,rear,nitem:longint; 
-                 itemx,itemy,itemz: array[0..maxq-1] of byte; 
-               end; 
- var n,s,t:byte; 
-     m:word; 
-     g: array[1..maxn,0..maxn] of byte; 
-     dp: array[1..maxn,1..maxn,0..1] of word; 
-     queue: tqueue; 
- procedure initq; 
- begin 
-   with queue do 
-   begin 
-     nitem:=0; 
-     front:=0;  
-     rear:=1; 
-   end; 
- end; 
- function empty:boolean; 
- begin 
-   with queue do 
-   empty:=(nitem=0); 
- end; 
- procedure push(x,y,z:byte); 
- begin 
-   with queue do 
-   begin 
-     front:=(front+1) mod maxq; 
-     inc(nitem); 
-     itemx[front]:=x; 
-     itemy[front]:=y;  
-     itemz[front]:=z; 
-   end; 
- end; 
- procedure pop(var x,y,z:byte); 
- begin 
-   with queue do 
-   begin 
-     dec(nitem); 
-     x:=itemx[rear]; 
-     y:=itemy[rear];  
-     z:=itemz[rear]; 
-     rear:=(rear+1) mod maxq; 
-   end; 
- end; 
- procedure enter; 
- var i:word; 
-     u,v,j,z:byte; 
- begin 
-   readln(n,m); 
-   readln(s,t); 
-   for i:=1 to n do 
-   g[i,0]:=0; 
-   for i:=1 to m do 
-   begin 
-     readln(u,v); 
-     inc(g[u,0]); 
-     g[u,g[u,0]]:=v; 
-   end; 
-   for i:=1 to n do 
-   for j:=1 to n do 
-   for z:=0 to 1 do 
-   dp[i,j,z]:=oo; 
-   dp[s,t,1]:=0; 
-   initq; 
-   push(s,t,1); 
- end; 
- procedure bfs; 
- var x,y,z,i:byte; 
-     mind: word; 
- begin 
-   repeat 
-     pop(x,y,z); 
-     if (z=0) then 
-     begin 
-       for i:=1 to g[x,0] do 
-       if dp[x,y,z]+1<dp[g[x,i],y,1] then 
-       begin 
-         dp[g[x,i],y,1]:=dp[x,y,z]+1; 
-         push(g[x,i],y,1); 
-       end; 
-     end 
-     else 
-     begin 
-       for i:=1 to g[y,0] do 
-       if dp[x,y,z]+1<dp[x,g[y,i],0] then 
-       begin 
-         dp[x,g[y,i],0]:=dp[x,y,z]+1; 
-         push(x,g[y,i],0); 
-       end; 
-     end; 
-   until empty; 
-   mind:=oo; 
-   for i:=1 to n do 
-   if dp[i,i,1]<mind then mind:=dp[i,i,1]; 
-   if mind=oo then writeln(-1) else writeln(mind div 2); 
- end; 
- begin 
-   enter; 
-   bfs; 
- end. 
				Y29uc3QgbWF4biA9IDI1MDsKICAgICAgb28gPSA2MDAwMDsKICAgICAgbWF4cSA9IDEwMDAwMDA7CnR5cGUgdHF1ZXVlID0gcmVjb3JkCiAgICAgICAgICAgICAgICBmcm9udCxyZWFyLG5pdGVtOmxvbmdpbnQ7CiAgICAgICAgICAgICAgICBpdGVteCxpdGVteSxpdGVtejogYXJyYXlbMC4ubWF4cS0xXSBvZiBieXRlOwogICAgICAgICAgICAgIGVuZDsKdmFyIG4scyx0OmJ5dGU7CiAgICBtOndvcmQ7CiAgICBnOiBhcnJheVsxLi5tYXhuLDAuLm1heG5dIG9mIGJ5dGU7CiAgICBkcDogYXJyYXlbMS4ubWF4biwxLi5tYXhuLDAuLjFdIG9mIHdvcmQ7CiAgICBxdWV1ZTogdHF1ZXVlOwpwcm9jZWR1cmUgaW5pdHE7CmJlZ2luCiAgd2l0aCBxdWV1ZSBkbwogIGJlZ2luCiAgICBuaXRlbTo9MDsKICAgIGZyb250Oj0wOyAKICAgIHJlYXI6PTE7CiAgZW5kOwplbmQ7CmZ1bmN0aW9uIGVtcHR5OmJvb2xlYW47CmJlZ2luCiAgd2l0aCBxdWV1ZSBkbwogIGVtcHR5Oj0obml0ZW09MCk7CmVuZDsKcHJvY2VkdXJlIHB1c2goeCx5LHo6Ynl0ZSk7CmJlZ2luCiAgd2l0aCBxdWV1ZSBkbwogIGJlZ2luCiAgICBmcm9udDo9KGZyb250KzEpIG1vZCBtYXhxOwogICAgaW5jKG5pdGVtKTsKICAgIGl0ZW14W2Zyb250XTo9eDsKICAgIGl0ZW15W2Zyb250XTo9eTsgCiAgICBpdGVteltmcm9udF06PXo7CiAgZW5kOwplbmQ7CnByb2NlZHVyZSBwb3AodmFyIHgseSx6OmJ5dGUpOwpiZWdpbgogIHdpdGggcXVldWUgZG8KICBiZWdpbgogICAgZGVjKG5pdGVtKTsKICAgIHg6PWl0ZW14W3JlYXJdOwogICAgeTo9aXRlbXlbcmVhcl07IAogICAgejo9aXRlbXpbcmVhcl07CiAgICByZWFyOj0ocmVhcisxKSBtb2QgbWF4cTsKICBlbmQ7CmVuZDsKcHJvY2VkdXJlIGVudGVyOwp2YXIgaTp3b3JkOwogICAgdSx2LGosejpieXRlOwpiZWdpbgogIHJlYWRsbihuLG0pOwogIHJlYWRsbihzLHQpOwogIGZvciBpOj0xIHRvIG4gZG8KICBnW2ksMF06PTA7CiAgZm9yIGk6PTEgdG8gbSBkbwogIGJlZ2luCiAgICByZWFkbG4odSx2KTsKICAgIGluYyhnW3UsMF0pOwogICAgZ1t1LGdbdSwwXV06PXY7CiAgZW5kOwogIGZvciBpOj0xIHRvIG4gZG8KICBmb3Igajo9MSB0byBuIGRvCiAgZm9yIHo6PTAgdG8gMSBkbwogIGRwW2ksaix6XTo9b287CiAgZHBbcyx0LDFdOj0wOwogIGluaXRxOwogIHB1c2gocyx0LDEpOwplbmQ7CnByb2NlZHVyZSBiZnM7CnZhciB4LHkseixpOmJ5dGU7CiAgICBtaW5kOiB3b3JkOwpiZWdpbgogIHJlcGVhdAogICAgcG9wKHgseSx6KTsKICAgIGlmICh6PTApIHRoZW4KICAgIGJlZ2luCiAgICAgIGZvciBpOj0xIHRvIGdbeCwwXSBkbwogICAgICBpZiBkcFt4LHksel0rMTxkcFtnW3gsaV0seSwxXSB0aGVuCiAgICAgIGJlZ2luCiAgICAgICAgZHBbZ1t4LGldLHksMV06PWRwW3gseSx6XSsxOwogICAgICAgIHB1c2goZ1t4LGldLHksMSk7CiAgICAgIGVuZDsKICAgIGVuZAogICAgZWxzZQogICAgYmVnaW4KICAgICAgZm9yIGk6PTEgdG8gZ1t5LDBdIGRvCiAgICAgIGlmIGRwW3gseSx6XSsxPGRwW3gsZ1t5LGldLDBdIHRoZW4KICAgICAgYmVnaW4KICAgICAgICBkcFt4LGdbeSxpXSwwXTo9ZHBbeCx5LHpdKzE7CiAgICAgICAgcHVzaCh4LGdbeSxpXSwwKTsKICAgICAgZW5kOwogICAgZW5kOwogIHVudGlsIGVtcHR5OwogIG1pbmQ6PW9vOwogIGZvciBpOj0xIHRvIG4gZG8KICBpZiBkcFtpLGksMV08bWluZCB0aGVuIG1pbmQ6PWRwW2ksaSwxXTsKICBpZiBtaW5kPW9vIHRoZW4gd3JpdGVsbigtMSkgZWxzZSB3cml0ZWxuKG1pbmQgZGl2IDIpOwplbmQ7CmJlZ2luCiAgZW50ZXI7CiAgYmZzOwplbmQu