package com.example.java;
public class W {
int a, b;
boolean delete;
public boolean isDelete() {
return delete;
}
public void setDelete(boolean delete) {
this.delete = delete;
}
public W(int a,int b) {
this.a = a;
this.b=b;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
public boolean equals(Object obj)
{
//return super.e
W o=(W)obj;
if(o.a==this.a)
return true;
return false;
}
}
package com.example.java;
import java.util.Comparator;
public class MyComparator implements Comparator<W> {
@Override
public int compare(W o1, W o2) {
// TODO Auto-generated method stub
if (o1.b < o2.b)
return -1;
return 1;
}
}
package com.example.java;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
public class MinTime {
static int n, m, t = 1;
static Scanner scan;
static int f[] = new int[26];
static int value[][][] = new int[26][26][2];
static List<Integer> set[] = new ArrayList[26];
static List<W> list = new ArrayList<W>();
static int start, stop;
public static void main(String[] args) {
scan = new Scanner(System.in);
n = scan.nextInt();
for (int i = 0; i < n; i++) {
fenjie();
}
start = f[scan.next().charAt(0) - 97];
stop = f[scan.next().charAt(0) - 97];
for (int i = 0; i < t; i++) {
if (i == start)
list.add(new W(i, 0));
else
list.add(new W(i, Integer.MAX_VALUE));
}
Collections.sort(list, new MyComparator());
while (true) {
W w = list.get(0);
if (w.a == stop)
break;
if (set[w.a] == null) {
list.remove(0);
Collections.sort(list, new MyComparator());
break;
}
Iterator<Integer> it = set[w.a].iterator();
int from = w.a;
while (it.hasNext()) {
int next = it.next();
int time = w.b + value[from][next][0];
if (value[from][next][1]!=0&&(time / value[from][next][1] % 2 == 0))
time = (time / value[from][next][1] + 1)
* value[from][next][1];
for (int i = 0; i < list.size(); i++) {
W ww = list.get(i);
if (ww.a == next) {
if (ww.b > time)
ww.b = time;
break;
}
}
}
list.remove(0);
Collections.sort(list, new MyComparator());
}
for (int i = 0; i < list.size(); i++) {
W ww = list.get(i);
if (ww.a == stop) {
System.out.println(ww.b);
}
}
}
private static void fenjie() {
char a, b;
a = scan.next().charAt(0);
b = scan.next().charAt(0);
if (f[a - 97] == 0) {
f[a - 97] = t++;
}
if (f[b - 97] == 0) {
f[b - 97] = t++;
}
int sum = scan.nextInt(), sum1 = scan.nextInt();
value[f[a - 97]][f[b - 97]][0] = sum;
value[f[a - 97]][f[b - 97]][1] = sum1;
if (set[f[a - 97]] == null) {
set[f[a - 97]] = new ArrayList<Integer>();
}
set[f[a - 97]].add(f[b - 97]);
}
}